aboutsummaryrefslogtreecommitdiff
path: root/src/input/tests.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-04-04 19:22:04 +0300
committerCan Celik <ogulcancelik@gmail.com>2026-04-05 01:23:06 +0300
commit41dd733ca7123c9ac4bfc6c781697a660e95b052 (patch)
tree3fc91815ca139ef2e0b281bba0abda4ef15175f4 /src/input/tests.rs
parent55c138263e190a1e79d4b997bfb9397306c0ec1f (diff)
feat: finish ghostty pane backend integration
Diffstat (limited to 'src/input/tests.rs')
-rw-r--r--src/input/tests.rs52
1 files changed, 51 insertions, 1 deletions
diff --git a/src/input/tests.rs b/src/input/tests.rs
index e6900df7..f7e18f24 100644
--- a/src/input/tests.rs
+++ b/src/input/tests.rs
@@ -1,7 +1,7 @@
use crossterm::event::{KeyCode, KeyEvent, KeyModifiers, ModifierKeyCode};
use super::{
- encode_cursor_key, encode_key, encode_mouse_scroll, encode_terminal_key,
+ encode_cursor_key, encode_key, encode_mouse_button, encode_mouse_scroll, encode_terminal_key,
parse_terminal_key_sequence, KeyboardProtocol, TerminalKey,
};
@@ -137,6 +137,42 @@ fn legacy_shift_f5() {
}
#[test]
+fn parse_legacy_f_keys() {
+ assert_terminal_key_eq(
+ parse_terminal_key_sequence("\x1bOP").expect("f1 should parse"),
+ KeyCode::F(1),
+ KeyModifiers::empty(),
+ crossterm::event::KeyEventKind::Press,
+ None,
+ );
+ assert_terminal_key_eq(
+ parse_terminal_key_sequence("\x1b[15~").expect("f5 should parse"),
+ KeyCode::F(5),
+ KeyModifiers::empty(),
+ crossterm::event::KeyEventKind::Press,
+ None,
+ );
+}
+
+#[test]
+fn parse_modified_f_keys() {
+ assert_terminal_key_eq(
+ parse_terminal_key_sequence("\x1b[1;2P").expect("shift+f1 should parse"),
+ KeyCode::F(1),
+ KeyModifiers::SHIFT,
+ crossterm::event::KeyEventKind::Press,
+ None,
+ );
+ assert_terminal_key_eq(
+ parse_terminal_key_sequence("\x1b[15;2~").expect("shift+f5 should parse"),
+ KeyCode::F(5),
+ KeyModifiers::SHIFT,
+ crossterm::event::KeyEventKind::Press,
+ None,
+ );
+}
+
+#[test]
fn legacy_alt_char_still_esc_prefix() {
// Alt+a on character keys still uses ESC prefix (not xterm modified)
let key = KeyEvent::new(KeyCode::Char('a'), KeyModifiers::ALT);
@@ -170,6 +206,20 @@ fn sgr_mouse_scroll_encodes_wheel_button_and_coordinates() {
}
#[test]
+fn sgr_mouse_release_keeps_button_code() {
+ let encoded = encode_mouse_button(
+ crossterm::event::MouseEventKind::Up(crossterm::event::MouseButton::Left),
+ 11,
+ 9,
+ KeyModifiers::empty(),
+ vt100::MouseProtocolEncoding::Sgr,
+ )
+ .expect("mouse release should encode");
+
+ assert_eq!(encoded, b"\x1b[<0;12;10m");
+}
+
+#[test]
fn kitty_shift_enter() {
let key = KeyEvent::new(KeyCode::Enter, KeyModifiers::SHIFT);
assert_eq!(