From 770549e93be6d07a1a49d9f771e60f3c887c8194 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 8 Apr 2024 08:44:32 -0600 Subject: [PATCH] Scroll with shift+home,end,pageup,pagedown --- src/main.rs | 2 +- src/terminal_box.rs | 28 ++++++++++++++++++++++++---- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 9936f9c..e5597da 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2231,7 +2231,7 @@ impl Application for App { } TermEvent::ChildExit(_error_code) => { //Ignore this for now - }, + } } } Message::TermEventTx(term_event_tx) => { diff --git a/src/terminal_box.rs b/src/terminal_box.rs index 70cdd84..6b26101 100644 --- a/src/terminal_box.rs +++ b/src/terminal_box.rs @@ -608,8 +608,22 @@ where let escape_code = match named { Named::Insert => csi("2", "~", mod_no), Named::Delete => csi("3", "~", mod_no), - Named::PageUp => csi("5", "~", mod_no), - Named::PageDown => csi("6", "~", mod_no), + Named::PageUp => { + if modifiers.shift() { + terminal.scroll(TerminalScroll::PageUp); + None + } else { + csi("5", "~", mod_no) + } + } + Named::PageDown => { + if modifiers.shift() { + terminal.scroll(TerminalScroll::PageDown); + None + } else { + csi("6", "~", mod_no) + } + } Named::ArrowUp => { if is_app_cursor { ss3("A", mod_no) @@ -639,14 +653,20 @@ where } } Named::End => { - if is_app_cursor { + if modifiers.shift() { + terminal.scroll(TerminalScroll::Bottom); + None + } else if is_app_cursor { ss3("F", mod_no) } else { csi("F", "", mod_no) } } Named::Home => { - if is_app_cursor { + if modifiers.shift() { + terminal.scroll(TerminalScroll::Top); + None + } else if is_app_cursor { ss3("H", mod_no) } else { csi("H", "", mod_no)