aboutsummaryrefslogtreecommitdiff
path: root/src/raw_input.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-14 22:57:09 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-14 22:57:09 +0300
commitc2e58974f4fd57fed7a8fc992ee20fe42b56e619 (patch)
tree8afdb39aa1ea5a3fed95b991f328aa85ae86382e /src/raw_input.rs
parent5c82623dbf6097035332f14164269ecaede6a61d (diff)
fix(input): scroll pane scrollback with pageup/pagedown and parse enhanced tilde sequences
Diffstat (limited to 'src/raw_input.rs')
-rw-r--r--src/raw_input.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/raw_input.rs b/src/raw_input.rs
index aa231595..3ebd9554 100644
--- a/src/raw_input.rs
+++ b/src/raw_input.rs
@@ -659,6 +659,28 @@ mod tests {
}
#[test]
+ fn parses_enhanced_pageup_press() {
+ let (RawInputEvent::Key(key), consumed) = extract_one_event(b"\x1b[5;1:1~").unwrap() else {
+ panic!("expected key");
+ };
+ assert_eq!(consumed, 8);
+ assert_eq!(key.code, KeyCode::PageUp);
+ assert_eq!(key.modifiers, KeyModifiers::empty());
+ assert_eq!(key.kind, KeyEventKind::Press);
+ }
+
+ #[test]
+ fn parses_enhanced_pagedown_release() {
+ let (RawInputEvent::Key(key), consumed) = extract_one_event(b"\x1b[6;1:3~").unwrap() else {
+ panic!("expected key");
+ };
+ assert_eq!(consumed, 8);
+ assert_eq!(key.code, KeyCode::PageDown);
+ assert_eq!(key.modifiers, KeyModifiers::empty());
+ assert_eq!(key.kind, KeyEventKind::Release);
+ }
+
+ #[test]
fn raw_input_family_matrix_is_covered() {
let cases: &[(&[u8], KeyCode, KeyModifiers)] = &[
(b"\x02", KeyCode::Char('b'), KeyModifiers::CONTROL),