]> granicus.if.org Git - vim/commitdiff
patch 9.0.0660: mapping with CTRL keys does not work in the GUI v9.0.0660
authorzeertzjq <zeertzjq@outlook.com>
Tue, 4 Oct 2022 19:14:28 +0000 (20:14 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 4 Oct 2022 19:14:28 +0000 (20:14 +0100)
Problem:    Mapping with CTRL keys does not work in the GUI.
Solution:   Recognize CSI next to K_SPECIAL. (closes #11275, closes #11270)

src/map.c
src/testdir/test_gui.vim
src/version.c

index 526ed50c49a7a5a55f93cd44297e9ade4e4954d4..e99da373b70e8e9b231f310b492811ad13b1b9ae 100644 (file)
--- 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++;
index 447eee86529b0023839994a40c5f59cbc6475ece..8ac0985c39fff70395ba11191c1a9f1b6df790a1 100644 (file)
@@ -1732,4 +1732,23 @@ func Test_gui_lowlevel_keyevent()
   bw!
 endfunc
 
+func Test_gui_macro_csi()
+  " Test for issue #11270
+  nnoremap <C-L> <Cmd>let g:triggered = 1<CR>
+  let @q = "\x9b\xfc\x04L"
+  norm @q
+  call assert_equal(1, g:triggered)
+  unlet g:triggered
+  nunmap <C-L>
+
+  " Test for issue #11057
+  inoremap <C-D>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 <C-D>t
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
index ce0dce07a660345d0df35e7a33eb41bdb8ece3d6..3adb51332c2e264185ee996938e24fb36af9c84b 100644 (file)
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    660,
 /**/
     659,
 /**/