diff --git a/st/config.def.h b/st/config.def.h index 6fa2f20..286fde8 100644 --- a/st/config.def.h +++ b/st/config.def.h @@ -204,14 +204,22 @@ static Shortcut shortcuts[] = { { TERMMOD, XK_Y, selpaste, {.i = 0} }, { ShiftMask, XK_Insert, selpaste, {.i = 0} }, { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, - { TERMMOD, XK_J, kscrolldown, {.i = +1} }, - { TERMMOD, XK_K, kscrollup, {.i = +1} }, { TERMMOD, XK_Up, kscrollup, {.i = +1} }, { TERMMOD, XK_Down, kscrolldown, {.i = +1} }, - { TERMMOD, XK_D, kscrolldown, {.i = +1} }, - { TERMMOD, XK_U, kscrollup, {.i = +1} }, { TERMMOD, XK_Prior, kscrollup, {.i = -1} }, { TERMMOD, XK_Next, kscrolldown, {.i = -1} }, + { TERMMOD, XK_J, kscrolldown, {.i = +1} }, + { TERMMOD, XK_K, kscrollup, {.i = +1} }, + { MODKEY, XK_J, kscrolldown, {.i = +1} }, + { MODKEY, XK_K, kscrollup, {.i = +1} }, + { TERMMOD, XK_B, kscrollup, {.i = -1} }, + { TERMMOD, XK_F, kscrolldown, {.i = -1} }, + { MODKEY, XK_B, kscrollup, {.i = -1} }, + { MODKEY, XK_F, kscrolldown, {.i = -1} }, + { TERMMOD, XK_D, kscrolldown, {.i = -2} }, + { TERMMOD, XK_U, kscrollup, {.i = -2} }, + { MODKEY, XK_D, kscrolldown, {.i = -2} }, + { MODKEY, XK_U, kscrollup, {.i = -2} }, { TERMMOD, XK_T, newterm, {.i = 0} }, }; diff --git a/st/st.c b/st/st.c index 8fdc8cd..55dcbd4 100644 --- a/st/st.c +++ b/st/st.c @@ -1094,7 +1094,7 @@ kscrolldown(const Arg* a) return; if (n < 0) - n = term.row + n; + n = MAX(term.row / -n, 1); if (n <= term.scr) { term.scr -= n; @@ -1120,7 +1120,7 @@ kscrollup(const Arg* a) return; if (n < 0) - n = term.row + n; + n = MAX(term.row / -n, 1); if (n <= term.histf - term.scr) { term.scr += n;