diff options
| author | akbash <akbash@herdr.dev> | 2026-09-03 00:19:49 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-02 23:19:49 +0200 |
| commit | 2ae8b91ca5919c26df7ce779b0e9a5dd98b769ae (patch) | |
| tree | ad5374d3cf754346be29e525f7abb6ca3a04367b /src/input/encode.rs | |
| parent | 45484aab84430ac2b18c7bbf44aba15f2b039677 (diff) | |
fix(windows): preserve dead-key composition in kitty panes (#3548)
refs #3546
Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
Diffstat (limited to 'src/input/encode.rs')
| -rw-r--r-- | src/input/encode.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/input/encode.rs b/src/input/encode.rs index 774ab1a6..6dfff4ce 100644 --- a/src/input/encode.rs +++ b/src/input/encode.rs @@ -16,6 +16,13 @@ pub fn encode_key(key: KeyEvent, protocol: KeyboardProtocol) -> Vec<u8> { } pub fn encode_terminal_key(key: TerminalKey, protocol: KeyboardProtocol) -> Vec<u8> { + // A zero Unicode value on this Windows character event means the host layout is + // still composing a dead key. Kitty panes must not receive its physical fallback. + // Legacy Windows panes take the native ConPTY fallback before reaching this encoder. + if matches!(protocol, KeyboardProtocol::Kitty { .. }) && key.is_windows_shift_dead_key() { + return Vec::new(); + } + // 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(); |
