diff --git a/src/global.c b/src/global.c index 606dc3c9..12c2cbc1 100644 --- a/src/global.c +++ b/src/global.c @@ -1147,6 +1147,9 @@ void shortcut_init(void) add_to_sclist(MMAIN, "M-^", 0, do_copy_text, 0); add_to_sclist(MMAIN, "M-}", 0, do_indent, 0); add_to_sclist(MMAIN, "M-{", 0, do_unindent, 0); +#ifdef KEY_BTAB + add_to_sclist(MMAIN, "S-Tab", KEY_BTAB, do_unindent, 0); +#endif add_to_sclist(MMAIN, "M-:", 0, record_macro, 0); add_to_sclist(MMAIN, "M-;", 0, run_macro, 0); add_to_sclist(MMAIN, "M-U", 0, do_undo, 0); diff --git a/src/winio.c b/src/winio.c index f3d548a0..ea067761 100644 --- a/src/winio.c +++ b/src/winio.c @@ -621,8 +621,14 @@ int parse_kbinput(WINDOW *win) if (console && ioctl(0, TIOCLINUX, &modifiers) >= 0) { #ifndef NANO_TINY /* Is Shift being held? */ - if (modifiers & 0x01) + if (modifiers & 0x01) { +#ifdef KEY_BTAB + /* A shifted is a back tab. */ + if (retval == TAB_CODE) + return KEY_BTAB; +#endif shift_held = TRUE; + } #endif /* Is Ctrl being held? */ if (modifiers & 0x04) { @@ -655,6 +661,16 @@ int parse_kbinput(WINDOW *win) } #endif /* __linux__ */ +#ifndef NANO_TINY + /* When is pressed while the mark is on, do an indent. */ + if (retval == TAB_CODE && openfile->mark && currmenu == MMAIN) { + const sc *command = first_sc_for(MMAIN, do_indent); + + meta_key = command->meta; + return command->keycode; + } +#endif + switch (retval) { #ifdef KEY_SLEFT /* Slang doesn't support KEY_SLEFT. */