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:
26
src/misc2.c
26
src/misc2.c
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user