1
0
forked from aniani/vim

patch 8.2.1809: mapping some keys with Ctrl does not work properly

Problem:    Mapping some keys with Ctrl does not work properly.
Solution:   For terminal, GTK and Motif handle "@", "^" and "_" codes.
This commit is contained in:
Bram Moolenaar
2020-10-07 16:12:37 +02:00
parent f12f0022e6
commit 4e2114e988
7 changed files with 56 additions and 10 deletions

View File

@@ -2946,6 +2946,32 @@ find_special_key(
}
/*
* Some keys are used with Ctrl without Shift and are still expected to be
* mapped as if Shift was pressed:
* CTRL-2 is CTRL-@
* CTRL-6 is CTRL-^
* CTRL-- is CTRL-_
* Also, <C-H> and <C-h> mean the same thing, always use "H".
* Returns the possibly adjusted key.
*/
int
may_adjust_key_for_ctrl(int modifiers, int key)
{
if (modifiers & MOD_MASK_CTRL)
{
if (ASCII_ISALPHA(key))
return TOUPPER_ASC(key);
if (key == '2')
return '@';
if (key == '6')
return '^';
if (key == '-')
return '_';
}
return key;
}
/*
* Some keys already have Shift included, pass them as normal keys.
* Not when Ctrl is also used, because <C-H> and <C-S-H> are different.