0
0
mirror of https://github.com/vim/vim.git synced 2025-07-25 10:54:51 -04:00

patch 9.0.1826: keytrans() doesn't translate recorded key typed in a GUI

Problem:  keytrans() doesn't translate recorded key typed in a GUI
Solution: Handle CSI like K_SPECIAL, like in mb_unescape()

closes: #12964
closes: #12966

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
This commit is contained in:
zeertzjq 2023-08-30 19:38:24 +02:00 committed by Christian Brabandt
parent 6e55e85f92
commit 1bed993c01
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
3 changed files with 17 additions and 2 deletions

View File

@ -1842,7 +1842,11 @@ str2special(
}
c = *str;
if (c == K_SPECIAL && str[1] != NUL && str[2] != NUL)
if ((c == K_SPECIAL
#ifdef FEAT_GUI
|| c == CSI
#endif
) && str[1] != NUL && str[2] != NUL)
{
if (str[1] == KS_MODIFIER)
{
@ -1850,7 +1854,11 @@ str2special(
str += 3;
c = *str;
}
if (c == K_SPECIAL && str[1] != NUL && str[2] != NUL)
if ((c == K_SPECIAL
#ifdef FEAT_GUI
|| c == CSI
#endif
) && str[1] != NUL && str[2] != NUL)
{
c = TO_SPECIAL(str[1], str[2]);
str += 2;

View File

@ -1687,4 +1687,9 @@ func Test_gui_macro_csi()
iunmap <C-D>t
endfunc
func Test_gui_csi_keytrans()
call assert_equal('<C-L>', keytrans("\x9b\xfc\x04L"))
call assert_equal('<C-D>', keytrans("\x9b\xfc\x04D"))
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@ -699,6 +699,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1826,
/**/
1825,
/**/