Index: src/nano.h =================================================================== --- src/nano.h (revision 5012) +++ src/nano.h (working copy) @@ -563,6 +563,8 @@ #define NANO_CONTROL_7 31 #define NANO_CONTROL_8 127 +#define CONTROL_LEFT 1001 +#define CONTROL_RIGHT 1002 #ifndef NANO_TINY /* Extra bits for the undo function. */ Index: src/winio.c =================================================================== --- src/winio.c (revision 5012) +++ src/winio.c (working copy) @@ -634,6 +631,12 @@ retval = ERR; break; #endif + case CONTROL_LEFT: + retval = sc_seq_or(do_prev_word_void, 0); + break; + case CONTROL_RIGHT: + retval = sc_seq_or(do_next_word_void, 0); + break; } /* If our result is an extended keypad value (i.e. a value @@ -709,11 +715,15 @@ * Terminal. */ case 'B': /* Esc O 1 ; 5 B == Ctrl-Down on * Terminal. */ + retval = get_escape_seq_abcd(seq[4]); + break; case 'C': /* Esc O 1 ; 5 C == Ctrl-Right on * Terminal. */ + retval = CONTROL_RIGHT; + break; case 'D': /* Esc O 1 ; 5 D == Ctrl-Left on * Terminal. */ - retval = get_escape_seq_abcd(seq[4]); + retval = CONTROL_LEFT; break; } } @@ -806,9 +816,13 @@ break; case 'a': /* Esc O a == Ctrl-Up on rxvt. */ case 'b': /* Esc O b == Ctrl-Down on rxvt. */ + retval = get_escape_seq_abcd(seq[1]); + break; case 'c': /* Esc O c == Ctrl-Right on rxvt. */ + retval = CONTROL_RIGHT; + break; case 'd': /* Esc O d == Ctrl-Left on rxvt. */ - retval = get_escape_seq_abcd(seq[1]); + retval = CONTROL_LEFT; break; case 'j': /* Esc O j == '*' on numeric keypad with * NumLock off on VT100/VT220/VT320/xterm/ @@ -896,9 +910,13 @@ switch (seq[1]) { case 'a': /* Esc o a == Ctrl-Up on Eterm. */ case 'b': /* Esc o b == Ctrl-Down on Eterm. */ + retval = get_escape_seq_abcd(seq[1]); + break; case 'c': /* Esc o c == Ctrl-Right on Eterm. */ + retval = CONTROL_RIGHT; + break; case 'd': /* Esc o d == Ctrl-Left on Eterm. */ - retval = get_escape_seq_abcd(seq[1]); + retval = CONTROL_LEFT; break; } break; @@ -968,11 +989,15 @@ * xterm. */ case 'B': /* Esc [ 1 ; 5 B == Ctrl-Down on * xterm. */ + retval = get_escape_seq_abcd(seq[4]); + break; case 'C': /* Esc [ 1 ; 5 C == Ctrl-Right on * xterm. */ + retval = CONTROL_RIGHT; + break; case 'D': /* Esc [ 1 ; 5 D == Ctrl-Left on * xterm. */ - retval = get_escape_seq_abcd(seq[4]); + retval = CONTROL_LEFT; break; } }