Support ctrl+^ -> RS, move to physical key

Fixes #2797
Part of #1862
This commit is contained in:
Daniel Imms
2026-01-01 04:41:44 -08:00
parent 40f2eefec7
commit 1c97e40a6a
2 changed files with 9 additions and 6 deletions
+4
View File
@@ -353,5 +353,9 @@ describe('Keyboard', () => {
assert.equal(testEvaluateKeyboardEvent({ ctrlKey: true, shiftKey: true, keyCode: 50, key: '@' }).key, '\x00');
});
it('should return proper sequence for ctrl+^', () => {
assert.equal(testEvaluateKeyboardEvent({ ctrlKey: true, shiftKey: true, keyCode: 54, key: '^' }).key, '\x1e');
});
});
});
+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;