From 1d604329b0ded93d18fd6b27f72c7473d1fee20f Mon Sep 17 00:00:00 2001 From: Can Celik Date: Sun, 23 Aug 2026 00:01:57 +0300 Subject: fix(windows): preserve non-us shifted text (#3055) * fix(windows): preserve non-us shifted text refs #3045 * fix(windows): retain shifted key repeat lifecycle refs #3045 --- src/input/encode.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/input') diff --git a/src/input/encode.rs b/src/input/encode.rs index 8ec8a1c5..774ab1a6 100644 --- a/src/input/encode.rs +++ b/src/input/encode.rs @@ -16,7 +16,10 @@ pub fn encode_key(key: KeyEvent, protocol: KeyboardProtocol) -> Vec { } pub fn encode_terminal_key(key: TerminalKey, protocol: KeyboardProtocol) -> Vec { - if key.kind != crossterm::event::KeyEventKind::Release { + // REPORT_ALL_KEYS must retain physical press/repeat/release semantics instead of + // reducing a native key to its layout-generated text. + let preserve_physical_key = key.has_physical_identity() && protocol.reports_all_keys(); + if !preserve_physical_key && key.kind != crossterm::event::KeyEventKind::Release { if let Some(text) = &key.generated_text { return text.as_bytes().to_vec(); } -- cgit v1.2.3