From dec4d3dc317d8e05e46a881989228bdcc3a819b1 Mon Sep 17 00:00:00 2001 From: Marcin Kulik Date: Sat, 3 Mar 2012 15:36:18 +0100 Subject: [PATCH] Handle more standard esc sequences --- app/assets/javascripts/player/vt.js.coffee | 35 ++++++++++++++-------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/app/assets/javascripts/player/vt.js.coffee b/app/assets/javascripts/player/vt.js.coffee index 54cb489..0fbbd00 100644 --- a/app/assets/javascripts/player/vt.js.coffee +++ b/app/assets/javascripts/player/vt.js.coffee @@ -82,31 +82,42 @@ class AsciiIo.VT @carriageReturn() when "\x84" - @index() # "D" + @index() # "ESC D" when "\x85" - @newLine() # "E" + @newLine() # "ESC E" when "\x88" - @setHorizontalTabStop() # "H" + @setHorizontalTabStop() # "ESC H" when "\x8d" - @reverseIndex() # "M" + @reverseIndex() # "ESC M" handlePrintableCharacters: (text) -> @buffer.print text handleStandardEscSeq: (data) -> last = data[data.length - 1] + intermediate = data[data.length - 2] - if last.match(/[\x40-\x5f]/) - # convert to C1 - char = String.fromCharCode(last.charCodeAt(0) + 0x40) - @handleControlCharacter(char) - else - switch last - when "c" - @resetTerminal() + switch last + when "A" + if intermediate is '(' + @setUkCharset() + when "B" + if intermediate is '(' + @setUsCharset() + when "D" + @index() + when "E" + @newLine() + when "H" + @setHorizontalTabStop() + when "M" + @reverseIndex() + when "c" + @resetTerminal() handlePrivateEscSeq: (data) -> last = data[data.length - 1] + intermediate = data[data.length - 2] switch last when "0"