From f4d216b63d010987775dc6eaf92afa72f86f2816 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Thu, 2 Jul 2026 16:22:11 +0300 Subject: fix: preserve windows backspace input refs #907 refs #920 --- src/client/input/windows_vti.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/client') diff --git a/src/client/input/windows_vti.rs b/src/client/input/windows_vti.rs index 49e77909..6404e586 100644 --- a/src/client/input/windows_vti.rs +++ b/src/client/input/windows_vti.rs @@ -497,6 +497,10 @@ impl WindowsInputMapper { return None; } + if record.virtual_key_code != 0 && (record.unicode < 0x20 || record.unicode == 0x7f) { + return None; + } + self.synthetic_utf16_unit_to_bytes(record.unicode) } @@ -1566,6 +1570,27 @@ mod tests { ); } + #[test] + fn vti_win32_input_mode_backspace_stays_backspace() { + let records = "\x1b[8;14;8;1;0;1_\x1b[8;14;8;0;0;1_".chars().map(key_char); + + assert_eq!( + translate(records), + vec![ + crate::protocol::ClientInputEvent::Key { + code: crate::protocol::ClientKeyCode::Backspace, + modifiers: 0, + kind: crate::protocol::ClientKeyKind::Press, + }, + crate::protocol::ClientInputEvent::Key { + code: crate::protocol::ClientKeyCode::Backspace, + modifiers: 0, + kind: crate::protocol::ClientKeyKind::Release, + }, + ] + ); + } + #[test] fn vti_win32_input_mode_ctrl_j_preserves_lf_control_key() { let records = "\x1b[74;36;10;1;8;1_\x1b[74;36;10;0;8;1_" -- cgit v1.2.3