aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/keymap.c')
-rw-r--r--src/nvim/keymap.c46
1 files changed, 38 insertions, 8 deletions
diff --git a/src/nvim/keymap.c b/src/nvim/keymap.c
index abf016b832..1e305528ba 100644
--- a/src/nvim/keymap.c
+++ b/src/nvim/keymap.c
@@ -158,7 +158,6 @@ static const struct key_name_entry {
{ ESC, "Esc" },
{ ESC, "Escape" }, // Alternative name
{ CSI, "CSI" },
- { K_CSI, "xCSI" },
{ '|', "Bar" },
{ '\\', "Bslash" },
{ K_DEL, "Del" },
@@ -222,6 +221,35 @@ 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" },
@@ -745,12 +773,15 @@ static int extract_modifiers(int key, int *modp)
modifiers &= ~MOD_MASK_SHIFT;
}
}
- if ((modifiers & MOD_MASK_CTRL)
- && ((key >= '?' && key <= '_') || ASCII_ISALPHA(key))) {
- key = Ctrl_chr(key);
- modifiers &= ~MOD_MASK_CTRL;
- if (key == 0) { // <C-@> is <Nul>
- key = K_ZERO;
+ if ((modifiers & MOD_MASK_CTRL) && ((key >= '?' && key <= '_') || ASCII_ISALPHA(key))) {
+ key = TOUPPER_ASC(key);
+ int new_key = Ctrl_chr(key);
+ if (new_key != TAB && new_key != CAR && new_key != ESC) {
+ key = new_key;
+ modifiers &= ~MOD_MASK_CTRL;
+ if (key == 0) { // <C-@> is <Nul>
+ key = K_ZERO;
+ }
}
}
@@ -964,7 +995,6 @@ char_u *replace_termcodes(const char_u *from, const size_t from_len, char_u **bu
for (i = utfc_ptr2len_len(src, (int)(end - src) + 1); i > 0; i--) {
// If the character is K_SPECIAL, replace it with K_SPECIAL
// KS_SPECIAL KE_FILLER.
- // If compiled with the GUI replace CSI with K_CSI.
if (*src == K_SPECIAL) {
result[dlen++] = K_SPECIAL;
result[dlen++] = KS_SPECIAL;