aboutsummaryrefslogtreecommitdiff
path: root/src/input/tests.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-03-30 16:33:26 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-03-30 16:33:26 +0300
commit800a8c1a7a73c383fc97d4e5b6febf7f3249e948 (patch)
tree287677cb2a8aaa98aa529e847dda34fe688fc459 /src/input/tests.rs
parentfff21d64905cc50424aec698c88965aefd2df724 (diff)
fix ghostty macos arrow and modifier key parsing
Diffstat (limited to 'src/input/tests.rs')
-rw-r--r--src/input/tests.rs26
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);