From 62ce64f97d5a77b1304abf4ab30bf67b78678fcf Mon Sep 17 00:00:00 2001 From: ayapi Date: Sat, 27 Aug 2016 01:03:35 +0900 Subject: [PATCH] add modifier+delete keys --- src/xterm.js | 8 +++++++- test/test.js | 9 +++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/xterm.js b/src/xterm.js index bb74a3e2..ddf19da1 100644 --- a/src/xterm.js +++ b/src/xterm.js @@ -2974,7 +2974,13 @@ } break; // delete - case 46: result.key = '\x1b[3~'; break; + case 46: + if (modifiers) { + result.key = '\x1b[3;' + (modifiers + 1) + '~'; + } else { + result.key = '\x1b[3~'; + } + break; // home case 36: if (modifiers) diff --git a/test/test.js b/test/test.js index 7b67f234..bb2797e3 100644 --- a/test/test.js +++ b/test/test.js @@ -49,6 +49,15 @@ describe('xterm.js', function() { assert.equal(xterm.evaluateKeyEscapeSequence({ keyCode: 122 }).key, '\x1b[23~'); // CSI 2 3 ~ assert.equal(xterm.evaluateKeyEscapeSequence({ keyCode: 123 }).key, '\x1b[24~'); // CSI 2 4 ~ }); + it('should return \\x1b[3;5~ for ctrl+delete', function() { + assert.equal(xterm.evaluateKeyEscapeSequence({ ctrlKey: true, keyCode: 46 }).key, '\x1b[3;5~'); + }); + it('should return \\x1b[3;2~ for shift+delete', function() { + assert.equal(xterm.evaluateKeyEscapeSequence({ shiftKey: true, keyCode: 46 }).key, '\x1b[3;2~'); + }); + it('should return \\x1b[3;3~ for alt+delete', function() { + assert.equal(xterm.evaluateKeyEscapeSequence({ altKey: true, keyCode: 46 }).key, '\x1b[3;3~'); + }); it('should return \\x1b[5D for ctrl+left', function() { assert.equal(xterm.evaluateKeyEscapeSequence({ ctrlKey: true, keyCode: 37 }).key, '\x1b[1;5D'); // CSI 5 D });