From cf3cf38e6086394386d6c0a875d9501f0068c911 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Mon, 8 Jul 2019 15:25:30 -0700 Subject: [PATCH 1/2] Don't handle keyup that is handled by custom handler Fixes #2293 --- src/Terminal.ts | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/src/Terminal.ts b/src/Terminal.ts index ccec42e8..d3213d30 100644 --- a/src/Terminal.ts +++ b/src/Terminal.ts @@ -512,29 +512,7 @@ export class Terminal extends Disposable implements ITerminal, IDisposable, IInp * Apply key handling to the terminal */ private _bindKeys(): void { - const self = this; - this.register(addDisposableDomListener(this.element, 'keydown', function (ev: KeyboardEvent): void { - if (document.activeElement !== this) { - return; - } - self._keyDown(ev); - }, true)); - - this.register(addDisposableDomListener(this.element, 'keypress', function (ev: KeyboardEvent): void { - if (document.activeElement !== this) { - return; - } - self._keyPress(ev); - }, true)); - - this.register(addDisposableDomListener(this.element, 'keyup', (ev: KeyboardEvent) => { - if (!wasModifierKeyOnlyEvent(ev)) { - this.focus(); - } - - self._keyUp(ev); - }, true)); - + this.register(addDisposableDomListener(this.textarea, 'keyup', (ev: KeyboardEvent) => this._keyUp(ev), true)); this.register(addDisposableDomListener(this.textarea, 'keydown', (ev: KeyboardEvent) => this._keyDown(ev), true)); this.register(addDisposableDomListener(this.textarea, 'keypress', (ev: KeyboardEvent) => this._keyPress(ev), true)); this.register(addDisposableDomListener(this.textarea, 'compositionstart', () => this._compositionHelper.compositionstart())); @@ -1628,6 +1606,14 @@ export class Terminal extends Disposable implements ITerminal, IDisposable, IInp } protected _keyUp(ev: KeyboardEvent): void { + if (this._customKeyEventHandler && this._customKeyEventHandler(ev) === false) { + return; + } + + if (!wasModifierKeyOnlyEvent(ev)) { + this.focus(); + } + this.updateCursorStyle(ev); } From bf35ee801656d30d43b5060f190e90ed3a7f8a52 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Mon, 8 Jul 2019 15:29:09 -0700 Subject: [PATCH 2/2] Fix lint --- src/Terminal.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Terminal.ts b/src/Terminal.ts index d3213d30..1e51f439 100644 --- a/src/Terminal.ts +++ b/src/Terminal.ts @@ -1613,7 +1613,7 @@ export class Terminal extends Disposable implements ITerminal, IDisposable, IInp if (!wasModifierKeyOnlyEvent(ev)) { this.focus(); } - + this.updateCursorStyle(ev); }