# HG changeset patch # User Bram Moolenaar # Date 1664910903 -7200 # Node ID c6e85b9a88a05f2205074298f005c83e72cb889e # Parent a0ef66456ec86f294c3912374384501015085fe5 patch 9.0.0660: mapping with CTRL keys does not work in the GUI Commit: https://github.com/vim/vim/commit/2cd0f27b75c4497bec872819a965b3d6b4d55030 Author: zeertzjq Date: Tue Oct 4 20:14:28 2022 +0100 patch 9.0.0660: mapping with CTRL keys does not work in the GUI Problem: Mapping with CTRL keys does not work in the GUI. Solution: Recognize CSI next to K_SPECIAL. (closes https://github.com/vim/vim/issues/11275, closes https://github.com/vim/vim/issues/11270) diff --git a/src/map.c b/src/map.c --- a/src/map.c +++ b/src/map.c @@ -1753,7 +1753,11 @@ vim_strsave_escape_csi(char_u *p) d = res; for (s = p; *s != NUL; ) { - if (s[0] == K_SPECIAL && s[1] != NUL && s[2] != NUL) + if ((s[0] == K_SPECIAL +#ifdef FEAT_GUI + || (gui.in_use && s[0] == CSI) +#endif + ) && s[1] != NUL && s[2] != NUL) { // Copy special key unmodified. *d++ = *s++; diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim --- a/src/testdir/test_gui.vim +++ b/src/testdir/test_gui.vim @@ -1732,4 +1732,23 @@ func Test_gui_lowlevel_keyevent() bw! endfunc +func Test_gui_macro_csi() + " Test for issue #11270 + nnoremap let g:triggered = 1 + let @q = "\x9b\xfc\x04L" + norm @q + call assert_equal(1, g:triggered) + unlet g:triggered + nunmap + + " Test for issue #11057 + inoremap t bbb + call setline(1, "\t") + let @q = "i\x9b\xfc\x04D" + " The end of :normal is like a mapping timing out + norm @q + call assert_equal('', getline(1)) + iunmap t +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -700,6 +700,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 660, +/**/ 659, /**/ 658,