diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-04-13 17:34:13 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-04-13 17:34:13 +0300 |
| commit | 305d9577043291af271d16bdd2208f748e5949ba (patch) | |
| tree | 743a6bf9cb241b852168fa58c69dfb2848c295b5 /src/input | |
| parent | 99c8468d7fa45454616b75c79c017985397a2d6c (diff) | |
fix input encoding for ctrl+letter in kitty mode
Diffstat (limited to 'src/input')
| -rw-r--r-- | src/input/encode.rs | 9 | ||||
| -rw-r--r-- | src/input/tests.rs | 14 |
2 files changed, 11 insertions, 12 deletions
diff --git a/src/input/encode.rs b/src/input/encode.rs index 1311d4a0..6599b3ba 100644 --- a/src/input/encode.rs +++ b/src/input/encode.rs @@ -151,15 +151,6 @@ fn try_encode_csi_u(key: &TerminalKey, flags: u16) -> Option<Vec<u8>> { return None; } - // Plain Ctrl+letter is well-represented in legacy (bytes 1-26) - if mods == KeyModifiers::CONTROL { - if let KeyCode::Char(c) = key.code { - if c.is_ascii_alphabetic() { - return None; // let legacy handle it - } - } - } - // Special keys (arrows, F-keys, etc.) have well-established legacy // xterm modified formats (\x1b[1;3A for Alt+Up, etc.) that are universally // understood. Even Ghostty sends these in legacy format with kitty mode on. diff --git a/src/input/tests.rs b/src/input/tests.rs index d624d28a..6e196ad7 100644 --- a/src/input/tests.rs +++ b/src/input/tests.rs @@ -295,12 +295,20 @@ fn kitty_alt_enter() { } #[test] -fn kitty_plain_ctrl_c_uses_legacy() { - // Plain Ctrl+letter is well-represented in legacy +fn kitty_plain_ctrl_c_uses_csi_u() { let key = KeyEvent::new(KeyCode::Char('c'), KeyModifiers::CONTROL); assert_eq!( encode_key(key, KeyboardProtocol::Kitty { flags: 1 }), - vec![3] + b"\x1b[99;5u" + ); +} + +#[test] +fn kitty_plain_ctrl_c_includes_press_event_when_requested() { + let key = KeyEvent::new(KeyCode::Char('c'), KeyModifiers::CONTROL); + assert_eq!( + encode_key(key, KeyboardProtocol::Kitty { flags: 3 }), + b"\x1b[99;5:1u" ); } |
