diff options
author | Olivier G-R <olivier@fractalwire.io> | 2019-03-29 13:09:54 +0100 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2019-03-31 23:39:06 +0200 |
commit | d13803f64fc5607c6319087240e35a8b86082f64 (patch) | |
tree | 3e8e546c1e2cfd6934557e0093e8b0ec827b461f /src | |
parent | f793c578bc409be65b755c35d347b8c60f777eed (diff) | |
download | rneovim-d13803f64fc5607c6319087240e35a8b86082f64.tar.gz rneovim-d13803f64fc5607c6319087240e35a8b86082f64.tar.bz2 rneovim-d13803f64fc5607c6319087240e35a8b86082f64.zip |
keymap, terminal: more keycodes #9810
- input: recognize <kEqual>, <kComma>
- terminal.c: If we need to support function key, a change must be made
in libvtermkey. Currently, it emulates strictly VT220 terminal, and
returning numeric value in 'normal' mode is the expected behaviour.
closes #9810
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/getchar.c | 2 | ||||
-rw-r--r-- | src/nvim/keymap.c | 6 | ||||
-rw-r--r-- | src/nvim/keymap.h | 61 | ||||
-rw-r--r-- | src/nvim/main.c | 2 | ||||
-rw-r--r-- | src/nvim/terminal.c | 15 |
5 files changed, 50 insertions, 36 deletions
diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index 87a8d9b53e..c29ef9f822 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -1431,6 +1431,8 @@ int vgetc(void) case K_KMULTIPLY: c = '*'; break; case K_KENTER: c = CAR; break; case K_KPOINT: c = '.'; break; + case K_KCOMMA: c = ','; break; + case K_KEQUAL: c = '='; break; case K_K0: c = '0'; break; case K_K1: c = '1'; break; case K_K2: c = '2'; break; diff --git a/src/nvim/keymap.c b/src/nvim/keymap.c index ea04f1251e..9145813525 100644 --- a/src/nvim/keymap.c +++ b/src/nvim/keymap.c @@ -263,6 +263,10 @@ static const struct key_name_entry { { K_KENTER, "kEnter" }, { K_KENTER, "KPEnter" }, { K_KPOINT, "kPoint" }, + { K_KCOMMA, "kComma" }, + { K_KCOMMA, "KPComma" }, + { K_KEQUAL, "kEqual" }, + { K_KEQUAL, "KPEquals" }, { K_K0, "k0" }, { K_K1, "k1" }, @@ -684,7 +688,7 @@ int find_special_key(const char_u **srcp, const size_t src_len, int *const modp, *modp = modifiers; *srcp = end_of_name; return key; - } + } // else { ELOG("unknown key: '%s'", src); } } } return 0; diff --git a/src/nvim/keymap.h b/src/nvim/keymap.h index 92d8777382..7f0483826d 100644 --- a/src/nvim/keymap.h +++ b/src/nvim/keymap.h @@ -256,13 +256,13 @@ enum key_extra { #define K_ZERO TERMCAP2KEY(KS_ZERO, KE_FILLER) #define K_UP TERMCAP2KEY('k', 'u') -#define K_KUP TERMCAP2KEY('K', 'u') /* keypad up */ +#define K_KUP TERMCAP2KEY('K', 'u') // keypad up #define K_DOWN TERMCAP2KEY('k', 'd') -#define K_KDOWN TERMCAP2KEY('K', 'd') /* keypad down */ +#define K_KDOWN TERMCAP2KEY('K', 'd') // keypad down #define K_LEFT TERMCAP2KEY('k', 'l') -#define K_KLEFT TERMCAP2KEY('K', 'l') /* keypad left */ +#define K_KLEFT TERMCAP2KEY('K', 'l') // keypad left #define K_RIGHT TERMCAP2KEY('k', 'r') -#define K_KRIGHT TERMCAP2KEY('K', 'r') /* keypad right */ +#define K_KRIGHT TERMCAP2KEY('K', 'r') // keypad right #define K_S_UP TERMCAP2KEY(KS_EXTRA, KE_S_UP) #define K_S_DOWN TERMCAP2KEY(KS_EXTRA, KE_S_DOWN) #define K_S_LEFT TERMCAP2KEY('#', '4') @@ -288,7 +288,7 @@ enum key_extra { #define K_XLEFT TERMCAP2KEY(KS_EXTRA, KE_XLEFT) #define K_XRIGHT TERMCAP2KEY(KS_EXTRA, KE_XRIGHT) -#define K_F1 TERMCAP2KEY('k', '1') /* function keys */ +#define K_F1 TERMCAP2KEY('k', '1') // function keys #define K_F2 TERMCAP2KEY('k', '2') #define K_F3 TERMCAP2KEY('k', '3') #define K_F4 TERMCAP2KEY('k', '4') @@ -335,7 +335,7 @@ enum key_extra { #define K_S_XF3 TERMCAP2KEY(KS_EXTRA, KE_S_XF3) #define K_S_XF4 TERMCAP2KEY(KS_EXTRA, KE_S_XF4) -#define K_S_F1 TERMCAP2KEY(KS_EXTRA, KE_S_F1) /* shifted func. keys */ +#define K_S_F1 TERMCAP2KEY(KS_EXTRA, KE_S_F1) // shifted func. keys #define K_S_F2 TERMCAP2KEY(KS_EXTRA, KE_S_F2) #define K_S_F3 TERMCAP2KEY(KS_EXTRA, KE_S_F3) #define K_S_F4 TERMCAP2KEY(KS_EXTRA, KE_S_F4) @@ -360,36 +360,39 @@ enum key_extra { #define K_DEL TERMCAP2KEY('k', 'D') #define K_KDEL TERMCAP2KEY(KS_EXTRA, KE_KDEL) #define K_HOME TERMCAP2KEY('k', 'h') -#define K_KHOME TERMCAP2KEY('K', '1') /* keypad home (upper left) */ +#define K_KHOME TERMCAP2KEY('K', '1') // keypad home (upper left) #define K_XHOME TERMCAP2KEY(KS_EXTRA, KE_XHOME) #define K_ZHOME TERMCAP2KEY(KS_EXTRA, KE_ZHOME) #define K_END TERMCAP2KEY('@', '7') -#define K_KEND TERMCAP2KEY('K', '4') /* keypad end (lower left) */ +#define K_KEND TERMCAP2KEY('K', '4') // keypad end (lower left) #define K_XEND TERMCAP2KEY(KS_EXTRA, KE_XEND) #define K_ZEND TERMCAP2KEY(KS_EXTRA, KE_ZEND) #define K_PAGEUP TERMCAP2KEY('k', 'P') #define K_PAGEDOWN TERMCAP2KEY('k', 'N') -#define K_KPAGEUP TERMCAP2KEY('K', '3') /* keypad pageup (upper R.) */ -#define K_KPAGEDOWN TERMCAP2KEY('K', '5') /* keypad pagedown (lower R.) */ -#define K_KORIGIN TERMCAP2KEY('K', '2') /* keypad center */ - -#define K_KPLUS TERMCAP2KEY('K', '6') /* keypad plus */ -#define K_KMINUS TERMCAP2KEY('K', '7') /* keypad minus */ -#define K_KDIVIDE TERMCAP2KEY('K', '8') /* keypad / */ -#define K_KMULTIPLY TERMCAP2KEY('K', '9') /* keypad * */ -#define K_KENTER TERMCAP2KEY('K', 'A') /* keypad Enter */ -#define K_KPOINT TERMCAP2KEY('K', 'B') /* keypad . or ,*/ - -#define K_K0 TERMCAP2KEY('K', 'C') /* keypad 0 */ -#define K_K1 TERMCAP2KEY('K', 'D') /* keypad 1 */ -#define K_K2 TERMCAP2KEY('K', 'E') /* keypad 2 */ -#define K_K3 TERMCAP2KEY('K', 'F') /* keypad 3 */ -#define K_K4 TERMCAP2KEY('K', 'G') /* keypad 4 */ -#define K_K5 TERMCAP2KEY('K', 'H') /* keypad 5 */ -#define K_K6 TERMCAP2KEY('K', 'I') /* keypad 6 */ -#define K_K7 TERMCAP2KEY('K', 'J') /* keypad 7 */ -#define K_K8 TERMCAP2KEY('K', 'K') /* keypad 8 */ -#define K_K9 TERMCAP2KEY('K', 'L') /* keypad 9 */ +#define K_KPAGEUP TERMCAP2KEY('K', '3') // keypad pageup (upper R.) +#define K_KPAGEDOWN TERMCAP2KEY('K', '5') // keypad pagedown (lower R.) +#define K_KORIGIN TERMCAP2KEY('K', '2') // keypad center + +#define K_KPLUS TERMCAP2KEY('K', '6') // keypad plus +#define K_KMINUS TERMCAP2KEY('K', '7') // keypad minus +#define K_KDIVIDE TERMCAP2KEY('K', '8') // keypad / +#define K_KMULTIPLY TERMCAP2KEY('K', '9') // keypad * +#define K_KENTER TERMCAP2KEY('K', 'A') // keypad Enter +#define K_KPOINT TERMCAP2KEY('K', 'B') // keypad . or , + +#define K_K0 TERMCAP2KEY('K', 'C') // keypad 0 +#define K_K1 TERMCAP2KEY('K', 'D') // keypad 1 +#define K_K2 TERMCAP2KEY('K', 'E') // keypad 2 +#define K_K3 TERMCAP2KEY('K', 'F') // keypad 3 +#define K_K4 TERMCAP2KEY('K', 'G') // keypad 4 +#define K_K5 TERMCAP2KEY('K', 'H') // keypad 5 +#define K_K6 TERMCAP2KEY('K', 'I') // keypad 6 +#define K_K7 TERMCAP2KEY('K', 'J') // keypad 7 +#define K_K8 TERMCAP2KEY('K', 'K') // keypad 8 +#define K_K9 TERMCAP2KEY('K', 'L') // keypad 9 + +#define K_KCOMMA TERMCAP2KEY('K', 'M') // keypad comma +#define K_KEQUAL TERMCAP2KEY('K', 'N') // keypad equal #define K_MOUSE TERMCAP2KEY(KS_MOUSE, KE_FILLER) #define K_MENU TERMCAP2KEY(KS_MENU, KE_FILLER) diff --git a/src/nvim/main.c b/src/nvim/main.c index aa7f93c15e..48feeea669 100644 --- a/src/nvim/main.c +++ b/src/nvim/main.c @@ -551,7 +551,7 @@ int main(int argc, char **argv) RedrawingDisabled = 0; redraw_all_later(NOT_VALID); - no_wait_return = FALSE; + no_wait_return = false; // 'autochdir' has been postponed. do_autochdir(); diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c index ffe650f416..4ef37f14d2 100644 --- a/src/nvim/terminal.c +++ b/src/nvim/terminal.c @@ -878,15 +878,20 @@ static VTermKey convert_key(int key, VTermModifier *statep) case K_KINS: return VTERM_KEY_KP_0; case K_K1: FALLTHROUGH; case K_KEND: return VTERM_KEY_KP_1; - case K_K2: return VTERM_KEY_KP_2; + case K_K2: FALLTHROUGH; + case K_KDOWN: return VTERM_KEY_KP_2; case K_K3: FALLTHROUGH; case K_KPAGEDOWN: return VTERM_KEY_KP_3; - case K_K4: return VTERM_KEY_KP_4; - case K_K5: return VTERM_KEY_KP_5; - case K_K6: return VTERM_KEY_KP_6; + case K_K4: FALLTHROUGH; + case K_KLEFT: return VTERM_KEY_KP_4; + case K_K5: FALLTHROUGH; + case K_KORIGIN: return VTERM_KEY_KP_5; + case K_K6: FALLTHROUGH; + case K_KRIGHT: return VTERM_KEY_KP_6; case K_K7: FALLTHROUGH; case K_KHOME: return VTERM_KEY_KP_7; - case K_K8: return VTERM_KEY_KP_8; + case K_K8: FALLTHROUGH; + case K_KUP: return VTERM_KEY_KP_8; case K_K9: FALLTHROUGH; case K_KPAGEUP: return VTERM_KEY_KP_9; case K_KDEL: FALLTHROUGH; |