Get rid of W->A calls: LoadKeyboardLayoutA/W

Stefan Leichter Stefan.Leichter at camLine.com
Sun Nov 17 04:21:23 CST 2002


Changelog
------------
        moved implementation of LoadKeyboardLayout from ascii to unicode

--- wine/windows/input.c.sav	Sat Nov 16 21:47:24 2002
+++ wine/windows/input.c	Sat Nov 16 22:07:09 2002
@@ -40,6 +40,7 @@
 #include "input.h"
 #include "message.h"
 #include "queue.h"
+#include "winternl.h"
 #include "wine/debug.h"
 #include "winerror.h"
 
@@ -887,26 +888,30 @@
 }
 
 /***********************************************************************
- *		LoadKeyboardLayoutA (USER32.@)
+ *		LoadKeyboardLayoutW (USER32.@)
  * Call ignored. WINE supports only system default keyboard layout.
  */
-HKL WINAPI LoadKeyboardLayoutA(LPCSTR pwszKLID, UINT Flags)
+HKL WINAPI LoadKeyboardLayoutW(LPCWSTR pwszKLID, UINT Flags)
 {
-    TRACE_(keyboard)("(%s, %d)\n", pwszKLID, Flags);
+    TRACE_(keyboard)("(%s, %d)\n", debugstr_w(pwszKLID), Flags);
     ERR_(keyboard)("Only default system keyboard layout supported. Call ignored.\n");
   return 0;
 }
 
 /***********************************************************************
- *		LoadKeyboardLayoutW (USER32.@)
+ *		LoadKeyboardLayoutA (USER32.@)
  */
-HKL WINAPI LoadKeyboardLayoutW(LPCWSTR pwszKLID, UINT Flags)
+HKL WINAPI LoadKeyboardLayoutA(LPCSTR pwszKLID, UINT Flags)
 {
-    char buf[9];
+    HKL ret;
+    UNICODE_STRING pwszKLIDW;
 
-    WideCharToMultiByte( CP_ACP, 0, pwszKLID, -1, buf, sizeof(buf), NULL, NULL );
-    buf[8] = 0;
-    return LoadKeyboardLayoutA(buf, Flags);
+    if (pwszKLID) RtlCreateUnicodeStringFromAsciiz(&pwszKLIDW, pwszKLID);
+    else pwszKLIDW.Buffer = NULL;
+
+    ret = LoadKeyboardLayoutW(pwszKLIDW.Buffer, Flags);
+    RtlFreeUnicodeString(&pwszKLIDW);
+    return ret;
 }
 
 



More information about the wine-patches mailing list