aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-08-17 23:26:18 +0300
committerGitHub <noreply@github.com>2026-08-17 23:26:18 +0300
commit94093acb0aaefd7136108d402e25f3bdb86bde73 (patch)
treedbcebc660eba9edc267ced9e343ea10e1ea6dc5c /src/client
parentd2cbcd415cb598891f093d05b0052213047aa6bc (diff)
fix: match Windows Ctrl+digit keybindings (#2913)
refs #2910
Diffstat (limited to 'src/client')
-rw-r--r--src/client/input/windows_vti.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/client/input/windows_vti.rs b/src/client/input/windows_vti.rs
index c95cbc43..dcf804c1 100644
--- a/src/client/input/windows_vti.rs
+++ b/src/client/input/windows_vti.rs
@@ -683,7 +683,9 @@ impl WindowsInputMapper {
if key.unicode == 0 {
self.pending_high_surrogate = None;
}
- if modifiers.contains(crossterm::event::KeyModifiers::CONTROL) {
+ if modifiers.contains(crossterm::event::KeyModifiers::CONTROL)
+ && !(0x30..=0x39).contains(&key.virtual_key_code)
+ {
if let Some(code) = windows_unicode_control_to_key_code(key.unicode) {
self.pending_high_surrogate = None;
return Some(crate::protocol::ClientInputEvent::Key {
@@ -1426,12 +1428,13 @@ mod tests {
}
#[test]
- fn vti_real_non_letter_control_records_are_preserved() {
+ fn vti_control_records_keep_physical_digit_identity() {
let cases = [
(0x20, 0x00, ' '),
+ (0x31, 0x00, '1'),
(0xdc, 0x1c, '\\'),
(0xdd, 0x1d, ']'),
- (0x36, 0x1e, '^'),
+ (0x36, 0x1e, '6'),
(0xbd, 0x1f, '-'),
];