diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-01-30 07:56:54 +0800 |
---|---|---|
committer | bfredl <bjorn.linse@gmail.com> | 2022-03-24 11:02:39 +0100 |
commit | d7488bf38677b5d6b1df3a88e45b3d2f21527eb4 (patch) | |
tree | 5b436b807d7aaa6f9e2eb4ab5d5c9cde58e908a5 /src/nvim/keymap.c | |
parent | a72f338d76c871869712518df862c85d1df25f54 (diff) | |
download | rneovim-d7488bf38677b5d6b1df3a88e45b3d2f21527eb4.tar.gz rneovim-d7488bf38677b5d6b1df3a88e45b3d2f21527eb4.tar.bz2 rneovim-d7488bf38677b5d6b1df3a88e45b3d2f21527eb4.zip |
feat(input)!: delay some conversions to vgetc()
Diffstat (limited to 'src/nvim/keymap.c')
-rw-r--r-- | src/nvim/keymap.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/nvim/keymap.c b/src/nvim/keymap.c index 32f2158d7b..f0536cbf15 100644 --- a/src/nvim/keymap.c +++ b/src/nvim/keymap.c @@ -13,6 +13,7 @@ #include "nvim/memory.h" #include "nvim/message.h" #include "nvim/mouse.h" +#include "nvim/option_defs.h" #include "nvim/strings.h" #include "nvim/vim.h" @@ -744,12 +745,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 (!p_clbg || (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; + } } } |