diff --git a/src/nano.c b/src/nano.c index a542073..970134c 100644 --- a/src/nano.c +++ b/src/nano.c @@ -1618,6 +1618,10 @@ int do_input(bool allow_funcs) /* If we got a non-high-bit control key, a meta key sequence, or a * function key, and it's not a shortcut or toggle, throw it out. */ if (!have_shortcut) { + if (input == controlleft || input == controlright) + /* Function for this shortcut is already handled. */ + //NOTE: we do same when shortcut is fired using click. + return ERR; if (is_ascii_cntrl_char(input) || meta_key || !is_byte(input)) { unbound_key(input); input = ERR; diff --git a/src/prompt.c b/src/prompt.c index 34e7b4c..4097c80 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -81,6 +81,10 @@ int do_statusbar_input(bool *ran_func, bool *finished, /* If we got a non-high-bit control key, a meta key sequence, or a * function key, and it's not a shortcut or toggle, throw it out. */ if (!have_shortcut) { + if (input == controlleft || input == controlright) + /* Function for this shortcut is already handled. */ + //NOTE: we do same when a shortcut is fired using click. + return ERR; if (is_ascii_cntrl_char(input) || meta_key || !is_byte(input)) { beep(); input = ERR; diff --git a/src/winio.c b/src/winio.c index eccf41c..b23baf7 100644 --- a/src/winio.c +++ b/src/winio.c @@ -494,11 +494,25 @@ int parse_kbinput(WINDOW *win) if (retval == ERR) return ERR; - if (retval == controlleft) - return sc_seq_or(do_prev_word_void, controlleft); - else if (retval == controlright) - return sc_seq_or(do_next_word_void, controlright); - else if (retval == controlup) + if (retval == controlleft) { + if (currmenu == MMAIN) + do_prev_word_void(); + else if (currmenu == MWHEREIS || currmenu == MWRITEFILE || + currmenu == MREPLACE || currmenu == MREPLACEWITH || + currmenu == MINSERTFILE || currmenu == MYESNO || + currmenu == MGOTOLINE) + do_statusbar_prev_word(); + return controlleft; + } else if (retval == controlright) { + if (currmenu == MMAIN) + do_next_word_void(); + else if (currmenu == MWHEREIS || currmenu == MWRITEFILE || + currmenu == MREPLACE || currmenu == MREPLACEWITH || + currmenu == MINSERTFILE || currmenu == MYESNO || + currmenu == MGOTOLINE) + do_statusbar_next_word(); + return controlright; + } else if (retval == controlup) return sc_seq_or(do_prev_block, controlup); else if (retval == controldown) return sc_seq_or(do_next_block, controldown);