From 1bed993c01c4b5e4c6ab55e80e2410ba87de487c Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Wed, 30 Aug 2023 19:38:24 +0200 Subject: [PATCH] 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 Co-authored-by: zeertzjq --- src/message.c | 12 ++++++++++-- src/testdir/test_gui.vim | 5 +++++ src/version.c | 2 ++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/message.c b/src/message.c index a258e788b..98a362411 100644 --- a/src/message.c +++ b/src/message.c @@ -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; diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim index 1cf2b0f47..acc72f839 100644 --- a/src/testdir/test_gui.vim +++ b/src/testdir/test_gui.vim @@ -1687,4 +1687,9 @@ func Test_gui_macro_csi() iunmap t endfunc +func Test_gui_csi_keytrans() + call assert_equal('', keytrans("\x9b\xfc\x04L")) + call assert_equal('', keytrans("\x9b\xfc\x04D")) +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 593b7d5f2..2cad2b43b 100644 --- a/src/version.c +++ b/src/version.c @@ -699,6 +699,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1826, /**/ 1825, /**/