From 1104bcbccb523a856f2181060fc34ff73e4a3d48 Mon Sep 17 00:00:00 2001 From: Ashwin Ramaswami Date: Thu, 20 Dec 2018 09:41:44 -0500 Subject: [PATCH 1/7] Allow holding key on mac to send multiple keys to terminal --- src/core/input/Keyboard.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/input/Keyboard.ts b/src/core/input/Keyboard.ts index 8c6f3c5943..eccc3769aa 100644 --- a/src/core/input/Keyboard.ts +++ b/src/core/input/Keyboard.ts @@ -349,6 +349,8 @@ export function evaluateKeyboardEvent( if (ev.keyCode === 65) { // cmd + a result.type = KeyboardResultType.SELECT_ALL; } + } else if (ev.key && !ev.ctrlKey && !ev.altKey && !ev.metaKey && ev.key !== 'Shift') { + result.key = ev.key; } break; } From ec1060187d4789508a779744ab208efb0a92ca61 Mon Sep 17 00:00:00 2001 From: Ashwin Ramaswami Date: Thu, 20 Dec 2018 09:50:18 -0500 Subject: [PATCH 2/7] Add tests --- src/core/input/Keyboard.test.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/core/input/Keyboard.test.ts b/src/core/input/Keyboard.test.ts index e984683197..e0735a4a19 100644 --- a/src/core/input/Keyboard.test.ts +++ b/src/core/input/Keyboard.test.ts @@ -281,5 +281,15 @@ describe('Keyboard', () => { assert.equal(testEvaluateKeyboardEvent({ keyCode: 0, key: 'UIKeyInputDownArrow' }).key, '\x1b[B'); assert.equal(testEvaluateKeyboardEvent({ keyCode: 0, key: 'UIKeyInputDownArrow' }, { applicationCursorMode: true }).key, '\x1bOB'); }); + + it('should handle lowercase letters', () => { + assert.equal(testEvaluateKeyboardEvent({ keyCode: 65, key: 'a' }).key, 'a'); + assert.equal(testEvaluateKeyboardEvent({ keyCode: 189, key: '-' }).key, '-'); + }); + + it('should handle uppercase letters', () => { + assert.equal(testEvaluateKeyboardEvent({ shiftKey: true, keyCode: 65, key: 'A' }).key, 'A'); + }); + }); }); From b820f23da6817e299ca18e11bbd1008c45b0a024 Mon Sep 17 00:00:00 2001 From: Ashwin Ramaswami Date: Thu, 20 Dec 2018 09:50:57 -0500 Subject: [PATCH 3/7] Add additional test --- src/core/input/Keyboard.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/input/Keyboard.test.ts b/src/core/input/Keyboard.test.ts index e0735a4a19..a0dc3cbc41 100644 --- a/src/core/input/Keyboard.test.ts +++ b/src/core/input/Keyboard.test.ts @@ -289,6 +289,7 @@ describe('Keyboard', () => { it('should handle uppercase letters', () => { assert.equal(testEvaluateKeyboardEvent({ shiftKey: true, keyCode: 65, key: 'A' }).key, 'A'); + assert.equal(testEvaluateKeyboardEvent({ shiftKey: true, keyCode: 49, key: '!' }).key, '!'); }); }); From 0782fbb8284a0813d1edd8e11931f3977397a86e Mon Sep 17 00:00:00 2001 From: Ashwin Ramaswami Date: Thu, 20 Dec 2018 09:57:24 -0500 Subject: [PATCH 4/7] Fix check --- src/core/input/Keyboard.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/input/Keyboard.ts b/src/core/input/Keyboard.ts index eccc3769aa..31e97e3570 100644 --- a/src/core/input/Keyboard.ts +++ b/src/core/input/Keyboard.ts @@ -349,7 +349,7 @@ export function evaluateKeyboardEvent( if (ev.keyCode === 65) { // cmd + a result.type = KeyboardResultType.SELECT_ALL; } - } else if (ev.key && !ev.ctrlKey && !ev.altKey && !ev.metaKey && ev.key !== 'Shift') { + } else if (ev.key && !ev.ctrlKey && !ev.altKey && !ev.metaKey && ev.keyCode >= 65) { result.key = ev.key; } break; From 64dd9d46fbe18720651ad218ef39375d414fece7 Mon Sep 17 00:00:00 2001 From: Ashwin Ramaswami Date: Thu, 20 Dec 2018 14:21:35 -0500 Subject: [PATCH 5/7] Change keyCode cutoff --- src/core/input/Keyboard.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/input/Keyboard.ts b/src/core/input/Keyboard.ts index 31e97e3570..21c81a8119 100644 --- a/src/core/input/Keyboard.ts +++ b/src/core/input/Keyboard.ts @@ -349,7 +349,7 @@ export function evaluateKeyboardEvent( if (ev.keyCode === 65) { // cmd + a result.type = KeyboardResultType.SELECT_ALL; } - } else if (ev.key && !ev.ctrlKey && !ev.altKey && !ev.metaKey && ev.keyCode >= 65) { + } else if (ev.key && !ev.ctrlKey && !ev.altKey && !ev.metaKey && ev.keyCode >= 48) { result.key = ev.key; } break; From a4b4d082fb1f0a84105554fc4c42edb07bbaf362 Mon Sep 17 00:00:00 2001 From: Ashwin Ramaswami Date: Fri, 21 Dec 2018 07:38:14 -0500 Subject: [PATCH 6/7] Don't include num lock and scroll lock --- src/core/input/Keyboard.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/input/Keyboard.ts b/src/core/input/Keyboard.ts index 21c81a8119..37e663f529 100644 --- a/src/core/input/Keyboard.ts +++ b/src/core/input/Keyboard.ts @@ -349,7 +349,8 @@ export function evaluateKeyboardEvent( if (ev.keyCode === 65) { // cmd + a result.type = KeyboardResultType.SELECT_ALL; } - } else if (ev.key && !ev.ctrlKey && !ev.altKey && !ev.metaKey && ev.keyCode >= 48) { + } else if (ev.key && !ev.ctrlKey && !ev.altKey && !ev.metaKey && ev.keyCode >= 48 + && ev.keyCode !== 144 && ev.keyCode !== 145) { // Include only keys that that result in a character; don't include num lock and scroll lock result.key = ev.key; } break; From 9bcfb4d7225e178a93389b96c9b1225e85f74182 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Thu, 27 Dec 2018 10:04:48 -0800 Subject: [PATCH 7/7] Tidy up wrapping style --- src/core/input/Keyboard.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core/input/Keyboard.ts b/src/core/input/Keyboard.ts index 37e663f529..9d86b34942 100644 --- a/src/core/input/Keyboard.ts +++ b/src/core/input/Keyboard.ts @@ -349,8 +349,9 @@ export function evaluateKeyboardEvent( if (ev.keyCode === 65) { // cmd + a result.type = KeyboardResultType.SELECT_ALL; } - } else if (ev.key && !ev.ctrlKey && !ev.altKey && !ev.metaKey && ev.keyCode >= 48 - && ev.keyCode !== 144 && ev.keyCode !== 145) { // Include only keys that that result in a character; don't include num lock and scroll lock + } else if (ev.key && !ev.ctrlKey && !ev.altKey && !ev.metaKey && + ev.keyCode >= 48 && ev.keyCode !== 144 && ev.keyCode !== 145) { + // Include only keys that that result in a character; don't include num lock and scroll lock result.key = ev.key; } break;