aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2021-11-21 22:50:58 -0700
committerJosh Rahm <rahm@google.com>2022-01-11 14:31:07 -0700
commit96a00c7c588b2f38a2424aeeb4ea3581d370bf2d (patch)
tree2fe9add7a5d7b026ef245625839e1df97e519a60
parent3a020dd3737d55a69f93788dabc8d2d2d1ba9413 (diff)
downloadrneovim-96a00c7c588b2f38a2424aeeb4ea3581d370bf2d.tar.gz
rneovim-96a00c7c588b2f38a2424aeeb4ea3581d370bf2d.tar.bz2
rneovim-96a00c7c588b2f38a2424aeeb4ea3581d370bf2d.zip
Add support in Neovim for f38-f63 key bindings.
These bindings are generally accesses with <M-Fx> key presses.
-rw-r--r--src/nvim/keymap.c27
-rw-r--r--src/nvim/keymap.h27
-rw-r--r--src/nvim/terminal.c52
-rw-r--r--test/symbolic/klee/nvim/keymap.c27
4 files changed, 133 insertions, 0 deletions
diff --git a/src/nvim/keymap.c b/src/nvim/keymap.c
index abf016b832..533c9f3053 100644
--- a/src/nvim/keymap.c
+++ b/src/nvim/keymap.c
@@ -223,6 +223,33 @@ static const struct key_name_entry {
{ K_F36, "F36" },
{ K_F37, "F37" },
+ { K_F38, "F38" },
+ { K_F39, "F39" },
+ { K_F40, "F40" },
+ { K_F41, "F41" },
+ { K_F42, "F42" },
+ { K_F43, "F43" },
+ { K_F44, "F44" },
+ { K_F45, "F45" },
+ { K_F46, "F46" },
+ { K_F47, "F47" },
+ { K_F48, "F48" },
+ { K_F49, "F49" },
+ { K_F50, "F50" },
+ { K_F51, "F51" },
+ { K_F52, "F52" },
+ { K_F53, "F53" },
+ { K_F54, "F54" },
+ { K_F55, "F55" },
+ { K_F56, "F56" },
+ { K_F57, "F57" },
+ { K_F58, "F58" },
+ { K_F59, "F59" },
+ { K_F60, "F60" },
+ { K_F61, "F61" },
+ { K_F62, "F62" },
+ { K_F63, "F63" },
+
{ K_XF1, "xF1" },
{ K_XF2, "xF2" },
{ K_XF3, "xF3" },
diff --git a/src/nvim/keymap.h b/src/nvim/keymap.h
index 5a74d1dc00..5c8b81891c 100644
--- a/src/nvim/keymap.h
+++ b/src/nvim/keymap.h
@@ -328,6 +328,33 @@ enum key_extra {
#define K_F36 TERMCAP2KEY('F', 'Q')
#define K_F37 TERMCAP2KEY('F', 'R')
+#define K_F38 TERMCAP2KEY('F', 'S')
+#define K_F39 TERMCAP2KEY('F', 'T')
+#define K_F40 TERMCAP2KEY('F', 'U')
+#define K_F41 TERMCAP2KEY('F', 'V')
+#define K_F42 TERMCAP2KEY('F', 'W')
+#define K_F43 TERMCAP2KEY('F', 'X')
+#define K_F44 TERMCAP2KEY('F', 'Y')
+#define K_F45 TERMCAP2KEY('F', 'Z')
+#define K_F46 TERMCAP2KEY('F', 'a')
+#define K_F47 TERMCAP2KEY('F', 'b')
+#define K_F48 TERMCAP2KEY('F', 'c')
+#define K_F49 TERMCAP2KEY('F', 'd')
+#define K_F50 TERMCAP2KEY('F', 'e')
+#define K_F51 TERMCAP2KEY('F', 'f')
+#define K_F52 TERMCAP2KEY('F', 'g')
+#define K_F53 TERMCAP2KEY('F', 'h')
+#define K_F54 TERMCAP2KEY('F', 'i')
+#define K_F55 TERMCAP2KEY('F', 'j')
+#define K_F56 TERMCAP2KEY('F', 'k')
+#define K_F57 TERMCAP2KEY('F', 'l')
+#define K_F58 TERMCAP2KEY('F', 'm')
+#define K_F59 TERMCAP2KEY('F', 'n')
+#define K_F60 TERMCAP2KEY('F', 'o')
+#define K_F61 TERMCAP2KEY('F', 'p')
+#define K_F62 TERMCAP2KEY('F', 'q')
+#define K_F63 TERMCAP2KEY('F', 'r')
+
// extra set of shifted function keys F1-F4, for vt100 compatible xterm
#define K_S_XF1 TERMCAP2KEY(KS_EXTRA, KE_S_XF1)
#define K_S_XF2 TERMCAP2KEY(KS_EXTRA, KE_S_XF2)
diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c
index 70a5c7aa08..2c242f4a75 100644
--- a/src/nvim/terminal.c
+++ b/src/nvim/terminal.c
@@ -1206,6 +1206,58 @@ static VTermKey convert_key(int key, VTermModifier *statep)
return VTERM_KEY_FUNCTION(36);
case K_F37:
return VTERM_KEY_FUNCTION(37);
+ case K_F38:
+ return VTERM_KEY_FUNCTION(38);
+ case K_F39:
+ return VTERM_KEY_FUNCTION(39);
+ case K_F40:
+ return VTERM_KEY_FUNCTION(40);
+ case K_F41:
+ return VTERM_KEY_FUNCTION(41);
+ case K_F42:
+ return VTERM_KEY_FUNCTION(42);
+ case K_F43:
+ return VTERM_KEY_FUNCTION(43);
+ case K_F44:
+ return VTERM_KEY_FUNCTION(44);
+ case K_F45:
+ return VTERM_KEY_FUNCTION(45);
+ case K_F46:
+ return VTERM_KEY_FUNCTION(46);
+ case K_F47:
+ return VTERM_KEY_FUNCTION(47);
+ case K_F48:
+ return VTERM_KEY_FUNCTION(48);
+ case K_F49:
+ return VTERM_KEY_FUNCTION(49);
+ case K_F50:
+ return VTERM_KEY_FUNCTION(50);
+ case K_F51:
+ return VTERM_KEY_FUNCTION(51);
+ case K_F52:
+ return VTERM_KEY_FUNCTION(52);
+ case K_F53:
+ return VTERM_KEY_FUNCTION(53);
+ case K_F54:
+ return VTERM_KEY_FUNCTION(54);
+ case K_F55:
+ return VTERM_KEY_FUNCTION(55);
+ case K_F56:
+ return VTERM_KEY_FUNCTION(56);
+ case K_F57:
+ return VTERM_KEY_FUNCTION(57);
+ case K_F58:
+ return VTERM_KEY_FUNCTION(58);
+ case K_F59:
+ return VTERM_KEY_FUNCTION(59);
+ case K_F60:
+ return VTERM_KEY_FUNCTION(60);
+ case K_F61:
+ return VTERM_KEY_FUNCTION(61);
+ case K_F62:
+ return VTERM_KEY_FUNCTION(62);
+ case K_F63:
+ return VTERM_KEY_FUNCTION(63);
default:
return VTERM_KEY_NONE;
diff --git a/test/symbolic/klee/nvim/keymap.c b/test/symbolic/klee/nvim/keymap.c
index ed5f95a344..8bc597d7fe 100644
--- a/test/symbolic/klee/nvim/keymap.c
+++ b/test/symbolic/klee/nvim/keymap.c
@@ -223,6 +223,33 @@ static const struct key_name_entry {
{ K_F35, "F35" },
{ K_F36, "F36" },
{ K_F37, "F37" },
+ { K_F38, "F38" },
+
+ { K_F39, "F39" },
+ { K_F40, "F40" },
+ { K_F41, "F41" },
+ { K_F42, "F42" },
+ { K_F43, "F43" },
+ { K_F44, "F44" },
+ { K_F45, "F45" },
+ { K_F46, "F46" },
+ { K_F47, "F47" },
+ { K_F48, "F48" },
+ { K_F49, "F49" },
+ { K_F50, "F50" },
+ { K_F51, "F51" },
+ { K_F52, "F52" },
+ { K_F53, "F53" },
+ { K_F54, "F54" },
+ { K_F55, "F55" },
+ { K_F56, "F56" },
+ { K_F57, "F57" },
+ { K_F58, "F58" },
+ { K_F59, "F59" },
+ { K_F60, "F60" },
+ { K_F61, "F61" },
+ { K_F62, "F62" },
+ { K_F63, "F63" },
{ K_XF1, "xF1" },
{ K_XF2, "xF2" },