>From d514dc2b76d62c1cf09079882469235531496617 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Diego=20Aur=C3=A9lio=20Mesquita?= Date: Mon, 3 Dec 2018 23:45:18 -0200 Subject: [PATCH 2/2] bindings: hard bind toggle and jump to bookmarks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hard bind toggling bookmarks to M-Ins, jump to next bookmark to M-PgDn and jump to previous bookmark to M-PgUp. Signed-off-by: Marco Diego Aurélio Mesquita --- src/global.c | 6 +++++- src/nano.c | 3 +++ src/nano.h | 3 +++ src/proto.h | 3 ++- src/winio.c | 25 ++++++++++++++++++++++++- 5 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/global.c b/src/global.c index a39972a7..8a122fa7 100644 --- a/src/global.c +++ b/src/global.c @@ -76,7 +76,8 @@ int shiftleft, shiftright, shiftup, shiftdown; int shiftcontrolleft, shiftcontrolright, shiftcontrolup, shiftcontroldown; int shiftcontrolhome, shiftcontrolend; int altleft, altright, altup, altdown; -int altdelete; +int altpageup, altpagedown; +int altinsert, altdelete; int shiftaltleft, shiftaltright, shiftaltup, shiftaltdown; #endif @@ -1161,7 +1162,10 @@ void shortcut_init(void) add_to_sclist(MMAIN, "M-E", 0, do_redo, 0); add_to_sclist(MMAIN, "Sh-^Del", CONTROL_SHIFT_DELETE, do_cut_prev_word, 0); add_to_sclist(MMAIN, "^Del", CONTROL_DELETE, do_cut_next_word, 0); + add_to_sclist(MMAIN, "M-Ins", ALT_INSERT, bookmark, 0); add_to_sclist(MMAIN, "M-Del", ALT_DELETE, zap_text, 0); + add_to_sclist(MMAIN, "M-PgUp", ALT_PAGEUP, bookmark_previous, 0); + add_to_sclist(MMAIN, "M-PgDn", ALT_PAGEDOWN, bookmark_next, 0); #endif #ifdef ENABLE_WORDCOMPLETION add_to_sclist(MMAIN, "^]", 0, complete_a_word, 0); diff --git a/src/nano.c b/src/nano.c index 99e3cbed..b84856e2 100644 --- a/src/nano.c +++ b/src/nano.c @@ -2600,6 +2600,9 @@ int main(int argc, char **argv) altright = get_keycode("kRIT3", ALT_RIGHT); altup = get_keycode("kUP3", ALT_UP); altdown = get_keycode("kDN3", ALT_DOWN); + altpageup = get_keycode("kPRV3", ALT_PAGEUP); + altpagedown = get_keycode("kNXT3", ALT_PAGEDOWN); + altinsert = get_keycode("kIC3", ALT_INSERT); altdelete = get_keycode("kDC3", ALT_DELETE); shiftaltleft = get_keycode("kLFT4", SHIFT_ALT_LEFT); diff --git a/src/nano.h b/src/nano.h index caa398cf..83cfea30 100644 --- a/src/nano.h +++ b/src/nano.h @@ -598,6 +598,9 @@ enum #define ALT_RIGHT 0x422 #define ALT_UP 0x423 #define ALT_DOWN 0x424 +#define ALT_PAGEUP 0x427 +#define ALT_PAGEDOWN 0x428 +#define ALT_INSERT 0x42C #define ALT_DELETE 0x42D #define SHIFT_ALT_LEFT 0x431 #define SHIFT_ALT_RIGHT 0x432 diff --git a/src/proto.h b/src/proto.h index f23f19ba..49a6a01a 100644 --- a/src/proto.h +++ b/src/proto.h @@ -67,7 +67,8 @@ extern int shiftcontrolup, shiftcontroldown; extern int shiftcontrolhome, shiftcontrolend; extern int altleft, altright; extern int altup, altdown; -extern int altdelete; +extern int altpageup, altpagedown; +extern int altinsert, altdelete; extern int shiftaltleft, shiftaltright; extern int shiftaltup, shiftaltdown; #endif diff --git a/src/winio.c b/src/winio.c index a4a3df77..e80d3021 100644 --- a/src/winio.c +++ b/src/winio.c @@ -570,6 +570,12 @@ int parse_kbinput(WINDOW *win) return ALT_UP; else if (retval == altdown) return ALT_DOWN; + else if (retval == altpageup) + return ALT_PAGEUP; + else if (retval == altpagedown) + return ALT_PAGEDOWN; + else if (retval == altinsert) + return ALT_INSERT; else if (retval == altdelete) return ALT_DELETE; else if (retval == shiftaltleft) { @@ -610,6 +616,12 @@ int parse_kbinput(WINDOW *win) } /* Is Alt being held? */ if (modifiers == 0x08) { + if (retval == KEY_PPAGE) + return ALT_PAGEUP; + if (retval == KEY_NPAGE) + return ALT_PAGEDOWN; + if (retval == KEY_IC) + return ALT_INSERT; if (retval == KEY_DC) return ALT_DELETE; if (retval == KEY_UP) @@ -1101,9 +1113,14 @@ int convert_sequence(const int *seq, size_t length, int *consumed) /* Esc [ 2 ~ == Insert on VT220/VT320/ * Linux console/xterm/Terminal. */ return KEY_IC; - else if (length > 4 && seq[2] == ';' && seq[4] == '~') + else if (length > 4 && seq[2] == ';' && seq[4] == '~') { /* Esc [ 2 ; x ~ == modified Insert on xterm. */ *consumed = 5; + + if (seq[3] == '3') + /* Esc [ 2 ; 3 ~ == Shift-Delete on xterm. */ + return ALT_INSERT; + } break; case '3': /* Esc [ 3 ~ == Delete on VT220/VT320/ * Linux console/xterm/Terminal. */ @@ -1153,6 +1170,9 @@ int convert_sequence(const int *seq, size_t length, int *consumed) #ifndef NANO_TINY if (seq[3] == '2') return shiftaltup; + if (seq[3] == '3') + /* Esc [ 5 ; 3 ~ == Alt-PageUp on xterm. */ + return altpageup; #endif } break; @@ -1166,6 +1186,9 @@ int convert_sequence(const int *seq, size_t length, int *consumed) #ifndef NANO_TINY if (seq[3] == '2') return shiftaltdown; + if (seq[3] == '3') + /* Esc [ 6 ; 3 ~ == Alt-PageDown on xterm. */ + return altpagedown; #endif } break; -- 2.11.0