# HG changeset patch # User Christian Brabandt # Date 1706212804 -3600 # Node ID b629e912b0fbb0e06d8df8fb25e00b9cd0057d4d # Parent 073a16d82b75d55fd11da7563c3848ac21f93616 patch 9.1.0051: MS-Windows: Key event test fail Commit: https://github.com/vim/vim/commit/f6ebaa7ae64edbe2e56d65c2a3f2494301d11acb Author: Christian Brabandt Date: Thu Jan 25 20:44:49 2024 +0100 patch 9.1.0051: MS-Windows: Key event test fail Problem: MS-Windows: Key event test fail (after 9.1.0050) Solution: Catch Interrupt and return Ctrl-C Signed-off-by: Christian Brabandt 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 @@ -1708,7 +1708,11 @@ func Test_gui_lowlevel_keyevent() " Test for to keys for kc in range(65, 90) call SendKeys([0x11, kc]) - let ch = getcharstr() + try + let ch = getcharstr() + catch /^Vim:Interrupt$/ + let ch = "\" + endtry call assert_equal(nr2char(kc - 64), ch) endfor diff --git a/src/testdir/test_mswin_event.vim b/src/testdir/test_mswin_event.vim --- a/src/testdir/test_mswin_event.vim +++ b/src/testdir/test_mswin_event.vim @@ -36,6 +36,17 @@ func SendKey(key) call SendKeyWithModifiers(a:key, 0) endfunc +" getcharstr(0) but catch Vim:Interrupt +func Getcharstr() + try + let ch = getcharstr(0) + catch /^Vim:Interrupt$/ + let ch = "\" + endtry + return ch +endfunc + + " Send a string of individual key-press events, without modifiers. func SendKeyStr(keystring) for k in a:keystring @@ -347,7 +358,7 @@ func s:LoopTestKeyArray(arr) for [kcodes, kstr] in a:arr " Send as a sequence of key presses. call SendKeyGroup(kcodes) - let ch = getcharstr(0) + let ch = Getcharstr() " need to deal a bit differently with the non-printable ascii chars < 0x20 if kstr < 0x20 && index([s:VK.CONTROL, s:VK.LCONTROL, s:VK.RCONTROL], kcodes[0]) >= 0 call assert_equal(nr2char(kstr), $"{ch}") @@ -374,7 +385,7 @@ func s:LoopTestKeyArray(arr) endif endfor call SendKeyWithModifiers(key, modifiers) - let ch = getcharstr(0) + let ch = Getcharstr() " need to deal a bit differently with the non-printable ascii chars < 0x20 if kstr < 0x20 && index([s:VK.CONTROL, s:VK.LCONTROL, s:VK.RCONTROL], kcodes[0]) >= 0 call assert_equal(nr2char(kstr), $"{ch}") @@ -408,10 +419,10 @@ func Test_mswin_event_character_keys() " (0x30 - 0x39) : VK_0 - VK_9 are the same as ASCII '0' - '9' for kc in range(48, 57) call SendKey(kc) - let ch = getcharstr(0) + let ch = Getcharstr() call assert_equal(nr2char(kc), ch) call SendKeyWithModifiers(kc, 0) - let ch = getcharstr(0) + let ch = Getcharstr() call assert_equal(nr2char(kc), ch) endfor @@ -437,10 +448,10 @@ func Test_mswin_event_character_keys() " numbered 32 higher than their uppercase versions. for kc in range(65, 90) call SendKey(kc) - let ch = getcharstr(0) + let ch = Getcharstr() call assert_equal(nr2char(kc + 32), ch) call SendKeyWithModifiers(kc, 0) - let ch = getcharstr(0) + let ch = Getcharstr() call assert_equal(nr2char(kc + 32), ch) endfor @@ -449,10 +460,10 @@ func Test_mswin_event_character_keys() for modkey in [s:VK.SHIFT, s:VK.LSHIFT, s:VK.RSHIFT] for kc in range(65, 90) call SendKeyGroup([modkey, kc]) - let ch = getcharstr(0) + let ch = Getcharstr() call assert_equal(nr2char(kc), ch) call SendKeyWithModifiers(kc, s:MOD_MASK_SHIFT) - let ch = getcharstr(0) + let ch = Getcharstr() call assert_equal(nr2char(kc), ch) endfor endfor @@ -462,10 +473,10 @@ func Test_mswin_event_character_keys() for modkey in [s:VK.CONTROL, s:VK.LCONTROL, s:VK.RCONTROL] for kc in range(65, 90) call SendKeyGroup([modkey, kc]) - let ch = getcharstr(0) + let ch = Getcharstr() call assert_equal(nr2char(kc - 64), ch) call SendKeyWithModifiers(kc, s:MOD_MASK_CTRL) - let ch = getcharstr(0) + let ch = Getcharstr() call assert_equal(nr2char(kc - 64), ch) endfor endfor @@ -518,7 +529,7 @@ func Test_mswin_event_function_keys() while getchar(0) endwhile call SendKeyWithModifiers(111+n, vim_mod_mask) - let ch = getcharstr(0) + let ch = Getcharstr() let mod_mask = getcharmod() call assert_equal(keycode, $"{ch}", $"key = {kstr}") " workaround for the virtual termcap maps changing the character @@ -590,21 +601,21 @@ func Test_mswin_event_movement_keys() while getchar(0) endwhile execute 'call feedkeys("\<' .. kstr .. '>")' - let chstr_fk = getcharstr(0) + let chstr_fk = Getcharstr() call assert_equal(chstr_eval, chstr_fk, $"feedkeys = <{kstr}>") " flush out the typeahead buffer while getchar(0) endwhile call SendKey(kcode) - let chstr_alone = getcharstr(0) + let chstr_alone = Getcharstr() let chstr_alone_end = chstr_alone[len(chstr_alone)-2:len(chstr_alone)-1] " flush out the typeahead buffer while getchar(0) endwhile call SendKeyGroup(mod_keycodes + [kcode]) - let chstr_mswin = getcharstr(0) + let chstr_mswin = Getcharstr() let chstr_mswin_end = chstr_mswin[len(chstr_mswin)-2:len(chstr_mswin)-1] let mod_mask = getcharmod() @@ -653,7 +664,7 @@ func Test_QWERTY_Ctrl_minus() new call SendKeyGroup([s:VK.CONTROL, s:VK.OEM_MINUS]) - let ch = getcharstr(0) + let ch = Getcharstr() call assert_equal(nr2char(0x1f),ch) call SendKey(s:VK.KEY_I) diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -705,6 +705,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 51, +/**/ 50, /**/ 49,