diff --git a/src/global.c b/src/global.c index eab922babb35d0a72ff293cf80a0e75e573ccf83..ebfed9adf09b2a6230e7b73f718164962edd5df3 100644 --- a/src/global.c +++ b/src/global.c @@ -410,9 +410,18 @@ void assign_keyinfo(sc *s, const char *keystring) assert(strlen(keystring) > 1 && (!s->meta || strlen(keystring) > 2)); if (keystring[0] == '^') { - s->keycode = keystring[1] - 64; if (strcasecmp(keystring, "^Space") == 0) s->keycode = 0; + else if (strcasecmp(keystring, "^Left") == 0) + s->keycode = CONTROL_LEFT; + else if (strcasecmp(keystring, "^Right") == 0) + s->keycode = CONTROL_RIGHT; + else if (strcasecmp(keystring, "^Up") == 0) + s->keycode = CONTROL_UP; + else if (strcasecmp(keystring, "^Down") == 0) + s->keycode = CONTROL_DOWN; + else + s->keycode = keystring[1] - 64; } else if (s->meta) { s->keycode = tolower((int)keystring[2]); if (strcasecmp(keystring, "M-Space") == 0) @@ -1113,6 +1122,8 @@ void shortcut_init(void) add_to_sclist(MMOST, "Left", do_left, 0); add_to_sclist(MMOST, "^F", do_right, 0); add_to_sclist(MMOST, "Right", do_right, 0); + add_to_sclist(MMOST, "^Left", do_prev_word_void, 0); + add_to_sclist(MMOST, "^Right", do_next_word_void, 0); add_to_sclist(MMOST, "M-Space", do_prev_word_void, 0); add_to_sclist(MMOST, "^Space", do_next_word_void, 0); add_to_sclist((MMOST & ~MBROWSER), "^A", do_home, 0); @@ -1123,6 +1134,8 @@ void shortcut_init(void) add_to_sclist(MMAIN|MHELP|MBROWSER, "Up", do_up_void, 0); add_to_sclist(MMAIN|MHELP|MBROWSER, "^N", do_down_void, 0); add_to_sclist(MMAIN|MHELP|MBROWSER, "Down", do_down_void, 0); + add_to_sclist(MMAIN, "^Up", do_prev_block, 0); + add_to_sclist(MMAIN, "^Down", do_next_block, 0); add_to_sclist(MMAIN, "M-7", do_prev_block, 0); add_to_sclist(MMAIN, "M-8", do_next_block, 0); #ifndef DISABLE_JUSTIFY diff --git a/src/winio.c b/src/winio.c index 1573c61bafcdf53897387eb36f4352860fa62403..a1f6c0cfd951f67e8a4b6630fd8d23c7522516d6 100644 --- a/src/winio.c +++ b/src/winio.c @@ -495,13 +495,13 @@ int parse_kbinput(WINDOW *win) return ERR; if (retval == controlleft) - return sc_seq_or(do_prev_word_void, controlleft); + return CONTROL_LEFT; else if (retval == controlright) - return sc_seq_or(do_next_word_void, controlright); + return CONTROL_RIGHT; else if (retval == controlup) - return sc_seq_or(do_prev_block, controlup); + return CONTROL_UP; else if (retval == controldown) - return sc_seq_or(do_next_block, controldown); + return CONTROL_DOWN; #ifndef NANO_TINY else if (retval == shiftcontrolleft) { shift_held = TRUE;