diff options
author | bfredl <bjorn.linse@gmail.com> | 2022-03-24 12:05:36 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-24 12:05:36 +0100 |
commit | 0c4575311936bb015eecbf806074393170ef2038 (patch) | |
tree | fcb649f147d87f1878cc20cc5260840f05efdbad /src/nvim/keymap.c | |
parent | a72f338d76c871869712518df862c85d1df25f54 (diff) | |
parent | ed88ca75034a48916d165e88459c791c450df550 (diff) | |
download | rneovim-0c4575311936bb015eecbf806074393170ef2038.tar.gz rneovim-0c4575311936bb015eecbf806074393170ef2038.tar.bz2 rneovim-0c4575311936bb015eecbf806074393170ef2038.zip |
Merge pull request #17825 from bfredl/ctrl2
feat(input)!: distinguish ctrl input pairs (always)
Diffstat (limited to 'src/nvim/keymap.c')
-rw-r--r-- | src/nvim/keymap.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/nvim/keymap.c b/src/nvim/keymap.c index 32f2158d7b..9ad9640834 100644 --- a/src/nvim/keymap.c +++ b/src/nvim/keymap.c @@ -744,12 +744,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; + } } } |