aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/getchar.c87
-rw-r--r--src/nvim/keymap.c21
-rw-r--r--src/nvim/keymap.h5
3 files changed, 71 insertions, 42 deletions
diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c
index 139bf7b802..87a8d9b53e 100644
--- a/src/nvim/getchar.c
+++ b/src/nvim/getchar.c
@@ -1425,49 +1425,52 @@ int vgetc(void)
/* a keypad or special function key was not mapped, use it like
* its ASCII equivalent */
switch (c) {
- case K_KPLUS: c = '+'; break;
- case K_KMINUS: c = '-'; break;
- case K_KDIVIDE: c = '/'; break;
- case K_KMULTIPLY: c = '*'; break;
- case K_KENTER: c = CAR; break;
- case K_KPOINT:
- c = '.'; break;
- case K_K0: c = '0'; break;
- case K_K1: c = '1'; break;
- case K_K2: c = '2'; break;
- case K_K3: c = '3'; break;
- case K_K4: c = '4'; break;
- case K_K5: c = '5'; break;
- case K_K6: c = '6'; break;
- case K_K7: c = '7'; break;
- case K_K8: c = '8'; break;
- case K_K9: c = '9'; break;
-
- case K_XHOME:
- case K_ZHOME: if (mod_mask == MOD_MASK_SHIFT) {
- c = K_S_HOME;
- mod_mask = 0;
- } else if (mod_mask == MOD_MASK_CTRL) {
- c = K_C_HOME;
- mod_mask = 0;
- } else
- c = K_HOME;
- break;
- case K_XEND:
- case K_ZEND: if (mod_mask == MOD_MASK_SHIFT) {
- c = K_S_END;
- mod_mask = 0;
- } else if (mod_mask == MOD_MASK_CTRL) {
- c = K_C_END;
- mod_mask = 0;
- } else
- c = K_END;
- break;
+ case K_KPLUS: c = '+'; break;
+ case K_KMINUS: c = '-'; break;
+ case K_KDIVIDE: c = '/'; break;
+ case K_KMULTIPLY: c = '*'; break;
+ case K_KENTER: c = CAR; break;
+ case K_KPOINT: c = '.'; break;
+ case K_K0: c = '0'; break;
+ case K_K1: c = '1'; break;
+ case K_K2: c = '2'; break;
+ case K_K3: c = '3'; break;
+ case K_K4: c = '4'; break;
+ case K_K5: c = '5'; break;
+ case K_K6: c = '6'; break;
+ case K_K7: c = '7'; break;
+ case K_K8: c = '8'; break;
+ case K_K9: c = '9'; break;
+
+ case K_XHOME:
+ case K_ZHOME:
+ if (mod_mask == MOD_MASK_SHIFT) {
+ c = K_S_HOME;
+ mod_mask = 0;
+ } else if (mod_mask == MOD_MASK_CTRL) {
+ c = K_C_HOME;
+ mod_mask = 0;
+ } else {
+ c = K_HOME;
+ }
+ break;
+ case K_XEND:
+ case K_ZEND:
+ if (mod_mask == MOD_MASK_SHIFT) {
+ c = K_S_END;
+ mod_mask = 0;
+ } else if (mod_mask == MOD_MASK_CTRL) {
+ c = K_C_END;
+ mod_mask = 0;
+ } else {
+ c = K_END;
+ }
+ break;
- case K_XUP: c = K_UP; break;
- case K_XDOWN: c = K_DOWN; break;
- case K_XLEFT: c = K_LEFT; break;
- case K_XRIGHT: c = K_RIGHT; break;
+ case K_XUP: c = K_UP; break;
+ case K_XDOWN: c = K_DOWN; break;
+ case K_XLEFT: c = K_LEFT; break;
+ case K_XRIGHT: c = K_RIGHT; break;
}
/* For a multi-byte character get all the bytes and return the
diff --git a/src/nvim/keymap.c b/src/nvim/keymap.c
index ade5487ec8..ea04f1251e 100644
--- a/src/nvim/keymap.c
+++ b/src/nvim/keymap.c
@@ -163,6 +163,7 @@ static const struct key_name_entry {
{ K_DEL, "Del" },
{ K_DEL, "Delete" }, // Alternative name
{ K_KDEL, "kDel" },
+ { K_KDEL, "KPPeriod" }, // libtermkey name
{ K_UP, "Up" },
{ K_DOWN, "Down" },
{ K_LEFT, "Left" },
@@ -171,6 +172,14 @@ static const struct key_name_entry {
{ K_XDOWN, "xDown" },
{ K_XLEFT, "xLeft" },
{ K_XRIGHT, "xRight" },
+ { K_KUP, "kUp" },
+ { K_KUP, "KP8" },
+ { K_KDOWN, "kDown" },
+ { K_KDOWN, "KP2" },
+ { K_KLEFT, "kLeft" },
+ { K_KLEFT, "KP4" },
+ { K_KRIGHT, "kRight" },
+ { K_KRIGHT, "KP6" },
{ K_F1, "F1" },
{ K_F2, "F2" },
@@ -223,24 +232,36 @@ static const struct key_name_entry {
{ K_INS, "Insert" },
{ K_INS, "Ins" }, // Alternative name
{ K_KINS, "kInsert" },
+ { K_KINS, "KP0" },
{ K_HOME, "Home" },
{ K_KHOME, "kHome" },
+ { K_KHOME, "KP7" },
{ K_XHOME, "xHome" },
{ K_ZHOME, "zHome" },
{ K_END, "End" },
{ K_KEND, "kEnd" },
+ { K_KEND, "KP1" },
{ K_XEND, "xEnd" },
{ K_ZEND, "zEnd" },
{ K_PAGEUP, "PageUp" },
{ K_PAGEDOWN, "PageDown" },
{ K_KPAGEUP, "kPageUp" },
+ { K_KPAGEUP, "KP9" },
{ K_KPAGEDOWN, "kPageDown" },
+ { K_KPAGEDOWN, "KP3" },
+ { K_KORIGIN, "kOrigin" },
+ { K_KORIGIN, "KP5" },
{ K_KPLUS, "kPlus" },
+ { K_KPLUS, "KPPlus" },
{ K_KMINUS, "kMinus" },
+ { K_KMINUS, "KPMinus" },
{ K_KDIVIDE, "kDivide" },
+ { K_KDIVIDE, "KPDiv" },
{ K_KMULTIPLY, "kMultiply" },
+ { K_KMULTIPLY, "KPMult" },
{ K_KENTER, "kEnter" },
+ { K_KENTER, "KPEnter" },
{ K_KPOINT, "kPoint" },
{ K_K0, "k0" },
diff --git a/src/nvim/keymap.h b/src/nvim/keymap.h
index baf8963aa8..92d8777382 100644
--- a/src/nvim/keymap.h
+++ b/src/nvim/keymap.h
@@ -256,9 +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_DOWN TERMCAP2KEY('k', 'd')
+#define K_KDOWN TERMCAP2KEY('K', 'd') /* keypad down */
#define K_LEFT TERMCAP2KEY('k', 'l')
+#define K_KLEFT TERMCAP2KEY('K', 'l') /* keypad left */
#define K_RIGHT TERMCAP2KEY('k', 'r')
+#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')
@@ -367,6 +371,7 @@ enum key_extra {
#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 */