From ccaf0a71c61e344dc631eeaa0c5fdae0d1bcf6ad Mon Sep 17 00:00:00 2001 From: SerKo Date: Thu, 7 Apr 2022 06:07:28 +0800 Subject: [PATCH 1/2] fix: caps lock bug on macOS IME --- src/browser/Terminal.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/browser/Terminal.ts b/src/browser/Terminal.ts index f08d8581..e0054b4a 100644 --- a/src/browser/Terminal.ts +++ b/src/browser/Terminal.ts @@ -1134,6 +1134,15 @@ export class Terminal extends CoreTerminal implements ITerminal { return true; } + if (event.key && !event.ctrlKey && !event.altKey && !event.metaKey && event.key.length === 1 && ( + (event.keyCode >= 65 && event.keyCode <= 90) || + (event.keyCode >= 97 && event.keyCode <= 122) + )) { + // Include only keys in A-Z/a-z. + // HACK: Need process these key events in 'onkeypress' to fix a IME bug on macOS Chrome. fix for #2457 + return true; + } + if (this._unprocessedDeadKey) { this._unprocessedDeadKey = false; return true; From 1801403ce2242f55ea4d029921354a18e2e2e8c7 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Sun, 26 Jun 2022 09:22:39 -0700 Subject: [PATCH 2/2] Move off deprecated keyCode -> key --- src/browser/Terminal.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/browser/Terminal.ts b/src/browser/Terminal.ts index 1ba9c732..83b66013 100644 --- a/src/browser/Terminal.ts +++ b/src/browser/Terminal.ts @@ -1140,13 +1140,12 @@ export class Terminal extends CoreTerminal implements ITerminal { return true; } - if (event.key && !event.ctrlKey && !event.altKey && !event.metaKey && event.key.length === 1 && ( - (event.keyCode >= 65 && event.keyCode <= 90) || - (event.keyCode >= 97 && event.keyCode <= 122) - )) { - // Include only keys in A-Z/a-z. - // HACK: Need process these key events in 'onkeypress' to fix a IME bug on macOS Chrome. fix for #2457 - return true; + // HACK: Process A-Z in the keypress event to fix an issue with macOS IMEs where lower case + // letters cannot be input while caps lock is on. + if (event.key && !event.ctrlKey && !event.altKey && !event.metaKey && event.key.length === 1) { + if (event.key.charCodeAt(0) >= 65 && event.key.charCodeAt(0) <= 90) { + return true; + } } if (this._unprocessedDeadKey) {