Merge pull request #5565 from Tyriar/2797

Support ctrl+^ -> RS, move to physical key
This commit is contained in:
Daniel Imms
2026-01-01 05:25:52 -08:00
committed by GitHub
2 changed files with 14 additions and 7 deletions
+9 -1
View File
@@ -350,7 +350,15 @@ describe('Keyboard', () => {
});
it('should return proper sequence for ctrl+@', () => {
assert.equal(testEvaluateKeyboardEvent({ ctrlKey: true, shiftKey: true, keyCode: 50, key: '@' }).key, '\x00');
assert.equal(testEvaluateKeyboardEvent({ ctrlKey: true, shiftKey: true, keyCode: 50, code: 'Digit2', key: '@' }).key, '\x00');
});
it('should return proper sequence for ctrl+^', () => {
assert.equal(testEvaluateKeyboardEvent({ ctrlKey: true, shiftKey: true, keyCode: 54, code: 'Digit6', key: '^' }).key, '\x1e');
});
it('should return proper sequence for ctrl+_', () => {
assert.equal(testEvaluateKeyboardEvent({ ctrlKey: true, shiftKey: true, keyCode: 189, code: 'Minus', key: '_' }).key, '\x1f');
});
});
+5 -6
View File
@@ -360,12 +360,11 @@ export function evaluateKeyboardEvent(
// Include only keys that that result in a _single_ character; don't include num lock,
// volume up, etc.
result.key = ev.key;
} else if (ev.key && ev.ctrlKey) {
if (ev.key === '_') { // ^_
result.key = C0.US;
}
if (ev.key === '@') { // ^ + shift + 2 = ^ + @
result.key = C0.NUL;
} else if (ev.key && ev.ctrlKey && ev.shiftKey) {
switch (ev.code) {
case 'Minus': result.key = C0.US; break; // ^_ (Ctrl+Shift+-_
case 'Digit2': result.key = C0.NUL; break; // ^@ (Ctrl+Shift+2)
case 'Digit6': result.key = C0.RS; break; // ^^ (Ctrl+Shift+6)
}
}
break;