diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-04-04 19:22:04 +0300 |
|---|---|---|
| committer | Can Celik <ogulcancelik@gmail.com> | 2026-04-05 01:23:06 +0300 |
| commit | 41dd733ca7123c9ac4bfc6c781697a660e95b052 (patch) | |
| tree | 3fc91815ca139ef2e0b281bba0abda4ef15175f4 /src/input/parse.rs | |
| parent | 55c138263e190a1e79d4b997bfb9397306c0ec1f (diff) | |
feat: finish ghostty pane backend integration
Diffstat (limited to 'src/input/parse.rs')
| -rw-r--r-- | src/input/parse.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/input/parse.rs b/src/input/parse.rs index 995ad75b..525119f4 100644 --- a/src/input/parse.rs +++ b/src/input/parse.rs @@ -130,6 +130,18 @@ fn parse_legacy_special_sequence(data: &str) -> Option<TerminalKey> { "\x1b[6~" => Some(TerminalKey::new(KeyCode::PageDown, KeyModifiers::empty())), "\x1b[2~" => Some(TerminalKey::new(KeyCode::Insert, KeyModifiers::empty())), "\x1b[3~" => Some(TerminalKey::new(KeyCode::Delete, KeyModifiers::empty())), + "\x1bOP" => Some(TerminalKey::new(KeyCode::F(1), KeyModifiers::empty())), + "\x1bOQ" => Some(TerminalKey::new(KeyCode::F(2), KeyModifiers::empty())), + "\x1bOR" => Some(TerminalKey::new(KeyCode::F(3), KeyModifiers::empty())), + "\x1bOS" => Some(TerminalKey::new(KeyCode::F(4), KeyModifiers::empty())), + "\x1b[15~" => Some(TerminalKey::new(KeyCode::F(5), KeyModifiers::empty())), + "\x1b[17~" => Some(TerminalKey::new(KeyCode::F(6), KeyModifiers::empty())), + "\x1b[18~" => Some(TerminalKey::new(KeyCode::F(7), KeyModifiers::empty())), + "\x1b[19~" => Some(TerminalKey::new(KeyCode::F(8), KeyModifiers::empty())), + "\x1b[20~" => Some(TerminalKey::new(KeyCode::F(9), KeyModifiers::empty())), + "\x1b[21~" => Some(TerminalKey::new(KeyCode::F(10), KeyModifiers::empty())), + "\x1b[23~" => Some(TerminalKey::new(KeyCode::F(11), KeyModifiers::empty())), + "\x1b[24~" => Some(TerminalKey::new(KeyCode::F(12), KeyModifiers::empty())), "\x1b[Z" => Some(TerminalKey::new(KeyCode::BackTab, KeyModifiers::SHIFT)), _ => parse_xterm_modified_special_sequence(data), } @@ -151,6 +163,10 @@ fn parse_xterm_modified_special_sequence(data: &str) -> Option<TerminalKey> { 'D' => KeyCode::Left, 'H' => KeyCode::Home, 'F' => KeyCode::End, + 'P' => KeyCode::F(1), + 'Q' => KeyCode::F(2), + 'R' => KeyCode::F(3), + 'S' => KeyCode::F(4), _ => return None, }; return Some( @@ -168,6 +184,14 @@ fn parse_xterm_modified_special_sequence(data: &str) -> Option<TerminalKey> { "3" => KeyCode::Delete, "5" => KeyCode::PageUp, "6" => KeyCode::PageDown, + "15" => KeyCode::F(5), + "17" => KeyCode::F(6), + "18" => KeyCode::F(7), + "19" => KeyCode::F(8), + "20" => KeyCode::F(9), + "21" => KeyCode::F(10), + "23" => KeyCode::F(11), + "24" => KeyCode::F(12), _ => return None, }; Some(TerminalKey::new(code, key_modifiers_from_u8(mod_value))) |
