diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-03-30 16:33:26 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-03-30 16:33:26 +0300 |
| commit | 800a8c1a7a73c383fc97d4e5b6febf7f3249e948 (patch) | |
| tree | 287677cb2a8aaa98aa529e847dda34fe688fc459 /src/input/tests.rs | |
| parent | fff21d64905cc50424aec698c88965aefd2df724 (diff) | |
fix ghostty macos arrow and modifier key parsing
Diffstat (limited to 'src/input/tests.rs')
| -rw-r--r-- | src/input/tests.rs | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/input/tests.rs b/src/input/tests.rs index a4f32626..0d9d2c74 100644 --- a/src/input/tests.rs +++ b/src/input/tests.rs @@ -1,4 +1,4 @@ -use crossterm::event::{KeyCode, KeyEvent, KeyModifiers}; +use crossterm::event::{KeyCode, KeyEvent, KeyModifiers, ModifierKeyCode}; use super::{ encode_key, encode_terminal_key, parse_terminal_key_sequence, KeyboardProtocol, TerminalKey, @@ -326,6 +326,30 @@ fn parse_legacy_up_arrow_sequence() { } #[test] +fn parse_kitty_modifier_sequence() { + let key = parse_terminal_key_sequence("\x1b[57441;2:1u").unwrap(); + assert_eq!(key.code, KeyCode::Modifier(ModifierKeyCode::LeftShift)); + assert_eq!(key.modifiers, KeyModifiers::SHIFT); + assert_eq!(key.kind, crossterm::event::KeyEventKind::Press); +} + +#[test] +fn parse_ghostty_enhanced_up_arrow_press_sequence() { + let key = parse_terminal_key_sequence("\x1b[1;1:1A").unwrap(); + assert_eq!(key.code, KeyCode::Up); + assert_eq!(key.modifiers, KeyModifiers::empty()); + assert_eq!(key.kind, crossterm::event::KeyEventKind::Press); +} + +#[test] +fn parse_ghostty_enhanced_up_arrow_release_sequence() { + let key = parse_terminal_key_sequence("\x1b[1;1:3A").unwrap(); + assert_eq!(key.code, KeyCode::Up); + assert_eq!(key.modifiers, KeyModifiers::empty()); + assert_eq!(key.kind, crossterm::event::KeyEventKind::Release); +} + +#[test] fn parse_xterm_alt_up_arrow_sequence() { let key = parse_terminal_key_sequence("\x1b[1;3A").unwrap(); assert_eq!(key.code, KeyCode::Up); |
