aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/keymap.c
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2022-03-24 12:05:36 +0100
committerGitHub <noreply@github.com>2022-03-24 12:05:36 +0100
commit0c4575311936bb015eecbf806074393170ef2038 (patch)
treefcb649f147d87f1878cc20cc5260840f05efdbad /src/nvim/keymap.c
parenta72f338d76c871869712518df862c85d1df25f54 (diff)
parented88ca75034a48916d165e88459c791c450df550 (diff)
downloadrneovim-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.c15
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;
+ }
}
}