Skip to content

Commit 838d727

Browse files
authored
Merge pull request #1849 from epicfaace/feature/hold-key
Allow holding key on mac to send multiple keys to terminal
2 parents b48f910 + 9bcfb4d commit 838d727

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

src/core/input/Keyboard.test.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,5 +281,16 @@ describe('Keyboard', () => {
281281
assert.equal(testEvaluateKeyboardEvent({ keyCode: 0, key: 'UIKeyInputDownArrow' }).key, '\x1b[B');
282282
assert.equal(testEvaluateKeyboardEvent({ keyCode: 0, key: 'UIKeyInputDownArrow' }, { applicationCursorMode: true }).key, '\x1bOB');
283283
});
284+
285+
it('should handle lowercase letters', () => {
286+
assert.equal(testEvaluateKeyboardEvent({ keyCode: 65, key: 'a' }).key, 'a');
287+
assert.equal(testEvaluateKeyboardEvent({ keyCode: 189, key: '-' }).key, '-');
288+
});
289+
290+
it('should handle uppercase letters', () => {
291+
assert.equal(testEvaluateKeyboardEvent({ shiftKey: true, keyCode: 65, key: 'A' }).key, 'A');
292+
assert.equal(testEvaluateKeyboardEvent({ shiftKey: true, keyCode: 49, key: '!' }).key, '!');
293+
});
294+
284295
});
285296
});

src/core/input/Keyboard.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,10 @@ export function evaluateKeyboardEvent(
349349
if (ev.keyCode === 65) { // cmd + a
350350
result.type = KeyboardResultType.SELECT_ALL;
351351
}
352+
} else if (ev.key && !ev.ctrlKey && !ev.altKey && !ev.metaKey &&
353+
ev.keyCode >= 48 && ev.keyCode !== 144 && ev.keyCode !== 145) {
354+
// Include only keys that that result in a character; don't include num lock and scroll lock
355+
result.key = ev.key;
352356
}
353357
break;
354358
}

0 commit comments

Comments
 (0)