diff --git a/src/main.rs b/src/main.rs index 2569730..2e5bf46 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2269,7 +2269,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 773f982..c8ed7d6 100644 --- a/src/terminal_box.rs +++ b/src/terminal_box.rs @@ -615,8 +615,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) @@ -646,14 +660,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)