From 02d977ac4d1127174f4c77b25bfada14edcce3aa Mon Sep 17 00:00:00 2001 From: Hojjat Date: Mon, 25 May 2026 13:25:21 -0600 Subject: [PATCH] fix: send the correct up/down code in APP_CURSOR mode Fixes scrolling in `less` --- src/terminal.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/terminal.rs b/src/terminal.rs index 9f5fb65..6171d6c 100644 --- a/src/terminal.rs +++ b/src/terminal.rs @@ -1051,12 +1051,18 @@ impl Terminal { let (_, lines_y) = self .mouse_reporter .accumulate_scroll(delta, cell_width, cell_height); + let is_app_cursor = self.term.lock().mode().contains(TermMode::APP_CURSOR); + let (up, down) = if is_app_cursor { + (&b"\x1BOA"[..], &b"\x1BOB"[..]) + } else { + (&b"\x1B[A"[..], &b"\x1B[B"[..]) + }; const SCROLL_SPEED: u32 = 3; for _ in 0..(lines_y.unsigned_abs() * SCROLL_SPEED) { if lines_y > 0 { - self.input_no_scroll(b"\x1B[A".as_slice()) + self.input_no_scroll(up) } else if lines_y < 0 { - self.input_no_scroll(b"\x1B[B".as_slice()) + self.input_no_scroll(down) } } }