From c9277c3c721d600aa5cfef72e4af9c6e37addc22 Mon Sep 17 00:00:00 2001 From: kumaran-14 Date: Fri, 21 Feb 2020 13:13:46 +0530 Subject: [PATCH] Remove altEscape DECSET mode and add support for alt+esc key --- src/InputHandler.ts | 6 ------ src/Terminal.ts | 2 +- src/common/TestUtils.test.ts | 1 - src/common/Types.d.ts | 1 - src/common/input/Keyboard.test.ts | 11 ++++++++--- src/common/input/Keyboard.ts | 6 ++++-- 6 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/InputHandler.ts b/src/InputHandler.ts index a651440a..fb37f4ab 100644 --- a/src/InputHandler.ts +++ b/src/InputHandler.ts @@ -1788,9 +1788,6 @@ export class InputHandler extends Disposable implements IInputHandler { case 25: // show cursor this._coreService.isCursorHidden = false; break; - case 1039: - this._coreService.decPrivateModes.altEscMode = true; - break; case 1048: // alt screen cursor this.saveCursor(); break; @@ -2006,9 +2003,6 @@ export class InputHandler extends Disposable implements IInputHandler { case 25: // hide cursor this._coreService.isCursorHidden = true; break; - case 1039: - this._coreService.decPrivateModes.altEscMode = false; - break; case 1048: // alt screen cursor this.restoreCursor(); break; diff --git a/src/Terminal.ts b/src/Terminal.ts index 60646617..1bcac1f0 100644 --- a/src/Terminal.ts +++ b/src/Terminal.ts @@ -1222,7 +1222,7 @@ export class Terminal extends Disposable implements ITerminal, IDisposable, IInp return false; } - const result = evaluateKeyboardEvent(event, this._coreService.decPrivateModes.altEscMode, this._coreService.decPrivateModes.applicationCursorKeys, this.browser.isMac, this.options.macOptionIsMeta); + const result = evaluateKeyboardEvent(event, this._coreService.decPrivateModes.applicationCursorKeys, this.browser.isMac, this.options.macOptionIsMeta); this.updateCursorStyle(event); diff --git a/src/common/TestUtils.test.ts b/src/common/TestUtils.test.ts index 2257530c..4d9070cd 100644 --- a/src/common/TestUtils.test.ts +++ b/src/common/TestUtils.test.ts @@ -59,7 +59,6 @@ export class MockCoreService implements ICoreService { isCursorHidden: boolean = false; isFocused: boolean = false; decPrivateModes: IDecPrivateModes = { - altEscMode: true, applicationCursorKeys: false, applicationKeypad: false, origin: false, diff --git a/src/common/Types.d.ts b/src/common/Types.d.ts index 0a2d4252..b250b45e 100644 --- a/src/common/Types.d.ts +++ b/src/common/Types.d.ts @@ -152,7 +152,6 @@ export interface IMarker extends IDisposable { } export interface IDecPrivateModes { - altEscMode: boolean; applicationCursorKeys: boolean; applicationKeypad: boolean; origin: boolean; diff --git a/src/common/input/Keyboard.test.ts b/src/common/input/Keyboard.test.ts index ce492f0c..0bb0e24c 100644 --- a/src/common/input/Keyboard.test.ts +++ b/src/common/input/Keyboard.test.ts @@ -16,7 +16,6 @@ function testEvaluateKeyboardEvent(partialEvent: { key?: string; type?: string; }, partialOptions: { - altEnterMode?: boolean; applicationCursorMode?: boolean; isMac?: boolean; macOptionIsMeta?: boolean; @@ -31,12 +30,11 @@ function testEvaluateKeyboardEvent(partialEvent: { type: partialEvent.type || '' }; const options = { - altEnterMode: partialOptions.altEnterMode || true, applicationCursorMode: partialOptions.applicationCursorMode || false, isMac: partialOptions.isMac || false, macOptionIsMeta: partialOptions.macOptionIsMeta || false }; - return evaluateKeyboardEvent(event, options.altEnterMode, options.applicationCursorMode, options.isMac, options.macOptionIsMeta); + return evaluateKeyboardEvent(event, options.applicationCursorMode, options.isMac, options.macOptionIsMeta); } describe('Keyboard', () => { @@ -91,6 +89,9 @@ describe('Keyboard', () => { it('should return \\x1b\\r for alt+enter', () => { assert.equal(testEvaluateKeyboardEvent({ altKey: true, keyCode: 13 }).key, '\x1b\r'); }); + it('should return \\x1b\\x1b for alt+esc', () => { + assert.equal(testEvaluateKeyboardEvent({ altKey: true, keyCode: 27 }).key, '\x1b\x1b'); + }); it('should return \\x1b[5D for ctrl+left', () => { assert.equal(testEvaluateKeyboardEvent({ ctrlKey: true, keyCode: 37 }).key, '\x1b[1;5D'); // CSI 5 D }); @@ -146,6 +147,10 @@ describe('Keyboard', () => { it('should return \\x1ba for alt+a', () => { assert.equal(testEvaluateKeyboardEvent({ altKey: true, keyCode: 65 }, { isMac: true, macOptionIsMeta: true }).key, '\x1ba'); }); + + it('should return \\x1b\\x1b for alt+enter', () => { + assert.equal(testEvaluateKeyboardEvent({ altKey: true, keyCode: 13 }, { isMac: true, macOptionIsMeta: true }).key, '\x1b\r'); + }); }); it('should return \\x1b[5A for alt+up', () => { diff --git a/src/common/input/Keyboard.ts b/src/common/input/Keyboard.ts index 67b5ee44..d07ea625 100644 --- a/src/common/input/Keyboard.ts +++ b/src/common/input/Keyboard.ts @@ -37,7 +37,6 @@ const KEYCODE_KEY_MAPPINGS: { [key: number]: [string, string]} = { export function evaluateKeyboardEvent( ev: IKeyboardEvent, - altEscMode: boolean, applicationCursorMode: boolean, isMac: boolean, macOptionIsMeta: boolean @@ -104,7 +103,7 @@ export function evaluateKeyboardEvent( break; case 13: // return/enter - if (altEscMode && modifiers === 2) { + if (ev.altKey) { result.key = C0.ESC + C0.CR; } else { @@ -115,6 +114,9 @@ export function evaluateKeyboardEvent( case 27: // escape result.key = C0.ESC; + if (ev.altKey) { + result.key = C0.ESC + C0.ESC; + } result.cancel = true; break; case 37: