From 305d9577043291af271d16bdd2208f748e5949ba Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Mon, 13 Apr 2026 17:34:13 +0300 Subject: fix input encoding for ctrl+letter in kitty mode --- src/input/encode.rs | 9 --------- src/input/tests.rs | 14 +++++++++++--- 2 files changed, 11 insertions(+), 12 deletions(-) (limited to 'src/input') 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> { 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" ); } -- cgit v1.2.3