mirror of
https://github.com/neovim/neovim
synced 2025-07-17 17:51:48 +00:00
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
This commit is contained in:
committed by
Justin M. Keyes
parent
f793c578bc
commit
d13803f64f
@ -373,8 +373,10 @@ notation meaning equivalent decimal value(s) ~
|
|||||||
<kMinus> keypad - *keypad-minus*
|
<kMinus> keypad - *keypad-minus*
|
||||||
<kMultiply> keypad * *keypad-multiply*
|
<kMultiply> keypad * *keypad-multiply*
|
||||||
<kDivide> keypad / *keypad-divide*
|
<kDivide> keypad / *keypad-divide*
|
||||||
|
<kPoint> keypad . *keypad-point*
|
||||||
|
<kComma> keypad , *keypad-comma*
|
||||||
|
<kEqual> keypad = *keypad-equal*
|
||||||
<kEnter> keypad Enter *keypad-enter*
|
<kEnter> keypad Enter *keypad-enter*
|
||||||
<kPoint> keypad Decimal point *keypad-point*
|
|
||||||
<k0> - <k9> keypad 0 to 9 *keypad-0* *keypad-9*
|
<k0> - <k9> keypad 0 to 9 *keypad-0* *keypad-9*
|
||||||
<S-...> shift-key *shift* *<S-*
|
<S-...> shift-key *shift* *<S-*
|
||||||
<C-...> control-key *control* *ctrl* *<C-*
|
<C-...> control-key *control* *ctrl* *<C-*
|
||||||
|
@ -1431,6 +1431,8 @@ int vgetc(void)
|
|||||||
case K_KMULTIPLY: c = '*'; break;
|
case K_KMULTIPLY: c = '*'; break;
|
||||||
case K_KENTER: c = CAR; break;
|
case K_KENTER: c = CAR; break;
|
||||||
case K_KPOINT: c = '.'; break;
|
case K_KPOINT: c = '.'; break;
|
||||||
|
case K_KCOMMA: c = ','; break;
|
||||||
|
case K_KEQUAL: c = '='; break;
|
||||||
case K_K0: c = '0'; break;
|
case K_K0: c = '0'; break;
|
||||||
case K_K1: c = '1'; break;
|
case K_K1: c = '1'; break;
|
||||||
case K_K2: c = '2'; break;
|
case K_K2: c = '2'; break;
|
||||||
|
@ -263,6 +263,10 @@ static const struct key_name_entry {
|
|||||||
{ K_KENTER, "kEnter" },
|
{ K_KENTER, "kEnter" },
|
||||||
{ K_KENTER, "KPEnter" },
|
{ K_KENTER, "KPEnter" },
|
||||||
{ K_KPOINT, "kPoint" },
|
{ K_KPOINT, "kPoint" },
|
||||||
|
{ K_KCOMMA, "kComma" },
|
||||||
|
{ K_KCOMMA, "KPComma" },
|
||||||
|
{ K_KEQUAL, "kEqual" },
|
||||||
|
{ K_KEQUAL, "KPEquals" },
|
||||||
|
|
||||||
{ K_K0, "k0" },
|
{ K_K0, "k0" },
|
||||||
{ K_K1, "k1" },
|
{ 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;
|
*modp = modifiers;
|
||||||
*srcp = end_of_name;
|
*srcp = end_of_name;
|
||||||
return key;
|
return key;
|
||||||
}
|
} // else { ELOG("unknown key: '%s'", src); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -256,13 +256,13 @@ enum key_extra {
|
|||||||
#define K_ZERO TERMCAP2KEY(KS_ZERO, KE_FILLER)
|
#define K_ZERO TERMCAP2KEY(KS_ZERO, KE_FILLER)
|
||||||
|
|
||||||
#define K_UP TERMCAP2KEY('k', 'u')
|
#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_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_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_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_UP TERMCAP2KEY(KS_EXTRA, KE_S_UP)
|
||||||
#define K_S_DOWN TERMCAP2KEY(KS_EXTRA, KE_S_DOWN)
|
#define K_S_DOWN TERMCAP2KEY(KS_EXTRA, KE_S_DOWN)
|
||||||
#define K_S_LEFT TERMCAP2KEY('#', '4')
|
#define K_S_LEFT TERMCAP2KEY('#', '4')
|
||||||
@ -288,7 +288,7 @@ enum key_extra {
|
|||||||
#define K_XLEFT TERMCAP2KEY(KS_EXTRA, KE_XLEFT)
|
#define K_XLEFT TERMCAP2KEY(KS_EXTRA, KE_XLEFT)
|
||||||
#define K_XRIGHT TERMCAP2KEY(KS_EXTRA, KE_XRIGHT)
|
#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_F2 TERMCAP2KEY('k', '2')
|
||||||
#define K_F3 TERMCAP2KEY('k', '3')
|
#define K_F3 TERMCAP2KEY('k', '3')
|
||||||
#define K_F4 TERMCAP2KEY('k', '4')
|
#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_XF3 TERMCAP2KEY(KS_EXTRA, KE_S_XF3)
|
||||||
#define K_S_XF4 TERMCAP2KEY(KS_EXTRA, KE_S_XF4)
|
#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_F2 TERMCAP2KEY(KS_EXTRA, KE_S_F2)
|
||||||
#define K_S_F3 TERMCAP2KEY(KS_EXTRA, KE_S_F3)
|
#define K_S_F3 TERMCAP2KEY(KS_EXTRA, KE_S_F3)
|
||||||
#define K_S_F4 TERMCAP2KEY(KS_EXTRA, KE_S_F4)
|
#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_DEL TERMCAP2KEY('k', 'D')
|
||||||
#define K_KDEL TERMCAP2KEY(KS_EXTRA, KE_KDEL)
|
#define K_KDEL TERMCAP2KEY(KS_EXTRA, KE_KDEL)
|
||||||
#define K_HOME TERMCAP2KEY('k', 'h')
|
#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_XHOME TERMCAP2KEY(KS_EXTRA, KE_XHOME)
|
||||||
#define K_ZHOME TERMCAP2KEY(KS_EXTRA, KE_ZHOME)
|
#define K_ZHOME TERMCAP2KEY(KS_EXTRA, KE_ZHOME)
|
||||||
#define K_END TERMCAP2KEY('@', '7')
|
#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_XEND TERMCAP2KEY(KS_EXTRA, KE_XEND)
|
||||||
#define K_ZEND TERMCAP2KEY(KS_EXTRA, KE_ZEND)
|
#define K_ZEND TERMCAP2KEY(KS_EXTRA, KE_ZEND)
|
||||||
#define K_PAGEUP TERMCAP2KEY('k', 'P')
|
#define K_PAGEUP TERMCAP2KEY('k', 'P')
|
||||||
#define K_PAGEDOWN TERMCAP2KEY('k', 'N')
|
#define K_PAGEDOWN TERMCAP2KEY('k', 'N')
|
||||||
#define K_KPAGEUP TERMCAP2KEY('K', '3') /* keypad pageup (upper R.) */
|
#define K_KPAGEUP TERMCAP2KEY('K', '3') // keypad pageup (upper R.)
|
||||||
#define K_KPAGEDOWN TERMCAP2KEY('K', '5') /* keypad pagedown (lower R.) */
|
#define K_KPAGEDOWN TERMCAP2KEY('K', '5') // keypad pagedown (lower R.)
|
||||||
#define K_KORIGIN TERMCAP2KEY('K', '2') /* keypad center */
|
#define K_KORIGIN TERMCAP2KEY('K', '2') // keypad center
|
||||||
|
|
||||||
#define K_KPLUS TERMCAP2KEY('K', '6') /* keypad plus */
|
#define K_KPLUS TERMCAP2KEY('K', '6') // keypad plus
|
||||||
#define K_KMINUS TERMCAP2KEY('K', '7') /* keypad minus */
|
#define K_KMINUS TERMCAP2KEY('K', '7') // keypad minus
|
||||||
#define K_KDIVIDE TERMCAP2KEY('K', '8') /* keypad / */
|
#define K_KDIVIDE TERMCAP2KEY('K', '8') // keypad /
|
||||||
#define K_KMULTIPLY TERMCAP2KEY('K', '9') /* keypad * */
|
#define K_KMULTIPLY TERMCAP2KEY('K', '9') // keypad *
|
||||||
#define K_KENTER TERMCAP2KEY('K', 'A') /* keypad Enter */
|
#define K_KENTER TERMCAP2KEY('K', 'A') // keypad Enter
|
||||||
#define K_KPOINT TERMCAP2KEY('K', 'B') /* keypad . or ,*/
|
#define K_KPOINT TERMCAP2KEY('K', 'B') // keypad . or ,
|
||||||
|
|
||||||
#define K_K0 TERMCAP2KEY('K', 'C') /* keypad 0 */
|
#define K_K0 TERMCAP2KEY('K', 'C') // keypad 0
|
||||||
#define K_K1 TERMCAP2KEY('K', 'D') /* keypad 1 */
|
#define K_K1 TERMCAP2KEY('K', 'D') // keypad 1
|
||||||
#define K_K2 TERMCAP2KEY('K', 'E') /* keypad 2 */
|
#define K_K2 TERMCAP2KEY('K', 'E') // keypad 2
|
||||||
#define K_K3 TERMCAP2KEY('K', 'F') /* keypad 3 */
|
#define K_K3 TERMCAP2KEY('K', 'F') // keypad 3
|
||||||
#define K_K4 TERMCAP2KEY('K', 'G') /* keypad 4 */
|
#define K_K4 TERMCAP2KEY('K', 'G') // keypad 4
|
||||||
#define K_K5 TERMCAP2KEY('K', 'H') /* keypad 5 */
|
#define K_K5 TERMCAP2KEY('K', 'H') // keypad 5
|
||||||
#define K_K6 TERMCAP2KEY('K', 'I') /* keypad 6 */
|
#define K_K6 TERMCAP2KEY('K', 'I') // keypad 6
|
||||||
#define K_K7 TERMCAP2KEY('K', 'J') /* keypad 7 */
|
#define K_K7 TERMCAP2KEY('K', 'J') // keypad 7
|
||||||
#define K_K8 TERMCAP2KEY('K', 'K') /* keypad 8 */
|
#define K_K8 TERMCAP2KEY('K', 'K') // keypad 8
|
||||||
#define K_K9 TERMCAP2KEY('K', 'L') /* keypad 9 */
|
#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_MOUSE TERMCAP2KEY(KS_MOUSE, KE_FILLER)
|
||||||
#define K_MENU TERMCAP2KEY(KS_MENU, KE_FILLER)
|
#define K_MENU TERMCAP2KEY(KS_MENU, KE_FILLER)
|
||||||
|
@ -551,7 +551,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
RedrawingDisabled = 0;
|
RedrawingDisabled = 0;
|
||||||
redraw_all_later(NOT_VALID);
|
redraw_all_later(NOT_VALID);
|
||||||
no_wait_return = FALSE;
|
no_wait_return = false;
|
||||||
|
|
||||||
// 'autochdir' has been postponed.
|
// 'autochdir' has been postponed.
|
||||||
do_autochdir();
|
do_autochdir();
|
||||||
|
@ -878,15 +878,20 @@ static VTermKey convert_key(int key, VTermModifier *statep)
|
|||||||
case K_KINS: return VTERM_KEY_KP_0;
|
case K_KINS: return VTERM_KEY_KP_0;
|
||||||
case K_K1: FALLTHROUGH;
|
case K_K1: FALLTHROUGH;
|
||||||
case K_KEND: return VTERM_KEY_KP_1;
|
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_K3: FALLTHROUGH;
|
||||||
case K_KPAGEDOWN: return VTERM_KEY_KP_3;
|
case K_KPAGEDOWN: return VTERM_KEY_KP_3;
|
||||||
case K_K4: return VTERM_KEY_KP_4;
|
case K_K4: FALLTHROUGH;
|
||||||
case K_K5: return VTERM_KEY_KP_5;
|
case K_KLEFT: return VTERM_KEY_KP_4;
|
||||||
case K_K6: return VTERM_KEY_KP_6;
|
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_K7: FALLTHROUGH;
|
||||||
case K_KHOME: return VTERM_KEY_KP_7;
|
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_K9: FALLTHROUGH;
|
||||||
case K_KPAGEUP: return VTERM_KEY_KP_9;
|
case K_KPAGEUP: return VTERM_KEY_KP_9;
|
||||||
case K_KDEL: FALLTHROUGH;
|
case K_KDEL: FALLTHROUGH;
|
||||||
|
@ -46,6 +46,8 @@ describe('mappings', function()
|
|||||||
add_mapping('<kminus>','<kminus>')
|
add_mapping('<kminus>','<kminus>')
|
||||||
add_mapping('<kplus>','<kplus>')
|
add_mapping('<kplus>','<kplus>')
|
||||||
add_mapping('<kenter>','<kenter>')
|
add_mapping('<kenter>','<kenter>')
|
||||||
|
add_mapping('<kcomma>','<kcomma>')
|
||||||
|
add_mapping('<kequal>','<kequal>')
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('ok', function()
|
it('ok', function()
|
||||||
@ -96,6 +98,10 @@ describe('mappings', function()
|
|||||||
check_mapping('<KPPlus>','<kplus>')
|
check_mapping('<KPPlus>','<kplus>')
|
||||||
check_mapping('<kenter>','<kenter>')
|
check_mapping('<kenter>','<kenter>')
|
||||||
check_mapping('<KPEnter>','<kenter>')
|
check_mapping('<KPEnter>','<kenter>')
|
||||||
|
check_mapping('<kcomma>','<kcomma>')
|
||||||
|
check_mapping('<KPComma>','<kcomma>')
|
||||||
|
check_mapping('<kequal>','<kequal>')
|
||||||
|
check_mapping('<KPEquals>','<kequal>')
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user