[PATCH] user32/tests: Fix OemKeyScan failures with input method editors

Alex Henrie alexhenrie24 at gmail.com
Thu Dec 28 11:45:46 CST 2017


Signed-off-by: Alex Henrie <alexhenrie24 at gmail.com>
---
This should fix the failures on Korean Windows.

 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 7149dc824e..c71cbe2547 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 793590ef71..a15a64420d 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.15.1




More information about the wine-devel mailing list