1
0
forked from aniani/vim

patch 8.2.1930: wrong input if removing shift results in special key code

Problem:    Wrong input if removing shift results in special key code.
Solution:   Handle special key codes. (closes #7189)
This commit is contained in:
Bram Moolenaar
2020-10-31 16:33:47 +01:00
parent 0289065e41
commit 749bc9521d
3 changed files with 28 additions and 2 deletions

View File

@@ -4462,7 +4462,8 @@ modifiers2keycode(int modifiers, int *key, char_u *string)
if (modifiers != 0)
{
// Some keys have the modifier included. Need to handle that here to
// make mappings work.
// make mappings work. This may result in a special key, such as
// K_S_TAB.
*key = simplify_key(*key, &modifiers);
if (modifiers != 0)
{
@@ -4793,7 +4794,13 @@ handle_key_with_modifier(
// insert modifiers with KS_MODIFIER
new_slen = modifiers2keycode(modifiers, &key, string);
if (has_mbyte)
if (IS_SPECIAL(key))
{
string[new_slen++] = K_SPECIAL;
string[new_slen++] = KEY2TERMCAP0(key);
string[new_slen++] = KEY2TERMCAP1(key);
}
else if (has_mbyte)
new_slen += (*mb_char2bytes)(key, string + new_slen);
else
string[new_slen++] = key;