From 72ab2d5b078d0ebad70a0baed29a80ce6b6c86ad Mon Sep 17 00:00:00 2001 From: Alex Henrie Date: Thu, 28 Dec 2017 10:45:46 -0700 Subject: [PATCH] user32/tests: Fix OemKeyScan failures with input method editors. Signed-off-by: Alex Henrie Signed-off-by: Alexandre Julliard --- dlls/user32/tests/Makefile.in | 2 +- dlls/user32/tests/input.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/dlls/user32/tests/Makefile.in b/dlls/user32/tests/Makefile.in index 7149dc824ea..c71cbe25475 100644 --- a/dlls/user32/tests/Makefile.in +++ b/dlls/user32/tests/Makefile.in @@ -1,5 +1,5 @@ TESTDLL = user32.dll -IMPORTS = user32 gdi32 advapi32 +IMPORTS = user32 gdi32 advapi32 imm32 C_SRCS = \ broadcast.c \ diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c index 793590ef716..a15a64420d6 100644 --- a/dlls/user32/tests/input.c +++ b/dlls/user32/tests/input.c @@ -54,6 +54,7 @@ #include "winbase.h" #include "winuser.h" #include "winnls.h" +#include "imm.h" #include "wine/test.h" @@ -2515,6 +2516,7 @@ static void test_OemKeyScan(void) DWORD ret, expect, vkey, scan; WCHAR oem, wchr; char oem_char; + BOOL ime = ImmIsIME(GetKeyboardLayout(0)); for (oem = 0; oem < 0x200; oem++) { @@ -2527,7 +2529,10 @@ static void test_OemKeyScan(void) { vkey = VkKeyScanW( wchr ); scan = MapVirtualKeyW( LOBYTE( vkey ), MAPVK_VK_TO_VSC ); - if (!scan) + /* OemKeyScan returns -1 for any character that has to go through + * the IME, whereas VkKeyScan returns the virtual key code for the + * question mark key */ + if (!scan || (ime && wchr != '?' && vkey == VkKeyScanW( '?' ))) expect = -1; else { -- 2.11.4.GIT