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>
}
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)
{
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;
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
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1826,
/**/
1825,
/**/