diff --git a/unix/gtkwin.c b/unix/gtkwin.c index 74b0a2d8..b8607665 100644 --- a/unix/gtkwin.c +++ b/unix/gtkwin.c @@ -965,6 +965,15 @@ gint key_event(GtkWidget *widget, GdkEventKey *event, gpointer data) * Shift-PgUp and Shift-PgDn don't even generate keystrokes * at all. */ + if (event->keyval == GDK_KEY_Page_Up && + ((event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) == + (GDK_CONTROL_MASK | GDK_SHIFT_MASK))) { +#ifdef KEY_EVENT_DIAGNOSTICS + debug((" - Ctrl-Shift-PgUp scroll\n")); +#endif + term_scroll(inst->term, 1, 0); + return TRUE; + } if (event->keyval == GDK_KEY_Page_Up && (event->state & GDK_SHIFT_MASK)) { #ifdef KEY_EVENT_DIAGNOSTICS @@ -981,6 +990,15 @@ gint key_event(GtkWidget *widget, GdkEventKey *event, gpointer data) term_scroll(inst->term, 0, -1); return TRUE; } + if (event->keyval == GDK_KEY_Page_Down && + ((event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) == + (GDK_CONTROL_MASK | GDK_SHIFT_MASK))) { +#ifdef KEY_EVENT_DIAGNOSTICS + debug((" - Ctrl-shift-PgDn scroll\n")); +#endif + term_scroll(inst->term, -1, 0); + return TRUE; + } if (event->keyval == GDK_KEY_Page_Down && (event->state & GDK_SHIFT_MASK)) { #ifdef KEY_EVENT_DIAGNOSTICS diff --git a/windows/window.c b/windows/window.c index 1bef1daa..5a7040c4 100644 --- a/windows/window.c +++ b/windows/window.c @@ -4170,6 +4170,15 @@ static int TranslateKey(UINT message, WPARAM wParam, LPARAM lParam, SendMessage(hwnd, WM_VSCROLL, SB_PAGEUP, 0); return 0; } + if (wParam == VK_PRIOR && shift_state == 3) { /* ctrl-shift-pageup */ + SendMessage(hwnd, WM_VSCROLL, SB_TOP, 0); + return 0; + } + if (wParam == VK_NEXT && shift_state == 3) { /* ctrl-shift-pagedown */ + SendMessage(hwnd, WM_VSCROLL, SB_BOTTOM, 0); + return 0; + } + if (wParam == VK_PRIOR && shift_state == 2) { SendMessage(hwnd, WM_VSCROLL, SB_LINEUP, 0); return 0;