Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/user32/driver.c | 2 +- dlls/user32/input.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/dlls/user32/driver.c b/dlls/user32/driver.c index c075a49a350..f683cf25b7e 100644 --- a/dlls/user32/driver.c +++ b/dlls/user32/driver.c @@ -189,7 +189,7 @@ void USER_unload_driver(void)
static HKL CDECL nulldrv_ActivateKeyboardLayout( HKL layout, UINT flags ) { - return 0; + return (HKL)~0; /* use default implementation */ }
static void CDECL nulldrv_Beep(void) diff --git a/dlls/user32/input.c b/dlls/user32/input.c index 97be83369d9..ff90bc6f343 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -1310,11 +1310,16 @@ INT WINAPI ToAsciiEx( UINT virtKey, UINT scanCode, const BYTE *lpKeyState, /********************************************************************** * ActivateKeyboardLayout (USER32.@) */ -HKL WINAPI ActivateKeyboardLayout(HKL hLayout, UINT flags) +HKL WINAPI ActivateKeyboardLayout( HKL layout, UINT flags ) { - TRACE_(keyboard)("(%p, %d)\n", hLayout, flags); + HKL old_layout;
- return USER_Driver->pActivateKeyboardLayout(hLayout, flags); + TRACE_(keyboard)( "layout %p, flags %x\n", layout, flags ); + + if ((old_layout = USER_Driver->pActivateKeyboardLayout( layout, flags )) != (HKL)~0) + return old_layout; + + return get_locale_kbd_layout(); }
/**********************************************************************
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/user32/input.c | 9 +++++++++ dlls/winemac.drv/keyboard.c | 9 --------- dlls/winex11.drv/keyboard.c | 10 ---------- 3 files changed, 9 insertions(+), 19 deletions(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c index ff90bc6f343..d3dcf375746 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -1316,6 +1316,15 @@ HKL WINAPI ActivateKeyboardLayout( HKL layout, UINT flags )
TRACE_(keyboard)( "layout %p, flags %x\n", layout, flags );
+ if (flags) FIXME_(keyboard)( "flags %x not supported\n", flags ); + + if (layout == (HKL)HKL_NEXT || layout == (HKL)HKL_PREV) + { + SetLastError( ERROR_CALL_NOT_IMPLEMENTED ); + FIXME_(keyboard)( "HKL_NEXT and HKL_PREV not supported\n" ); + return 0; + } + if ((old_layout = USER_Driver->pActivateKeyboardLayout( layout, flags )) != (HKL)~0) return old_layout;
diff --git a/dlls/winemac.drv/keyboard.c b/dlls/winemac.drv/keyboard.c index 1ea15f59341..6732c5755ee 100644 --- a/dlls/winemac.drv/keyboard.c +++ b/dlls/winemac.drv/keyboard.c @@ -1169,15 +1169,6 @@ HKL CDECL macdrv_ActivateKeyboardLayout(HKL hkl, UINT flags)
TRACE("hkl %p flags %04x\n", hkl, flags);
- if (flags) FIXME("flags %x not supported\n",flags); - - if (hkl == (HKL)HKL_NEXT || hkl == (HKL)HKL_PREV) - { - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - FIXME("HKL_NEXT and HKL_PREV not supported\n"); - return 0; - } - EnterCriticalSection(&layout_list_section); update_layout_list();
diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c index 01620c5e4a4..d583c8588cd 100644 --- a/dlls/winex11.drv/keyboard.c +++ b/dlls/winex11.drv/keyboard.c @@ -1943,16 +1943,6 @@ HKL CDECL X11DRV_ActivateKeyboardLayout(HKL hkl, UINT flags) return 0; }
- if (flags) - FIXME("flags %x not supported\n",flags); - - if (hkl == (HKL)HKL_NEXT || hkl == (HKL)HKL_PREV) - { - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - FIXME("HKL_NEXT and HKL_PREV not supported\n"); - return 0; - } - if (!match_x11_keyboard_layout(hkl)) { SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=89780
Your paranoid android.
=== debiant2 (32 bit report) ===
user32: menu.c:2337: Test failed: test 27
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/user32/driver.c | 2 +- dlls/user32/input.c | 6 +++++- dlls/wineandroid.drv/keyboard.c | 20 -------------------- dlls/wineandroid.drv/wineandroid.drv.spec | 1 - 4 files changed, 6 insertions(+), 23 deletions(-)
diff --git a/dlls/user32/driver.c b/dlls/user32/driver.c index f683cf25b7e..efaa04db096 100644 --- a/dlls/user32/driver.c +++ b/dlls/user32/driver.c @@ -208,7 +208,7 @@ static INT CDECL nulldrv_GetKeyNameText( LONG lparam, LPWSTR buffer, INT size )
static HKL CDECL nulldrv_GetKeyboardLayout( DWORD thread_id ) { - return 0; + return (HKL)~0; /* use default implementation */ }
static BOOL CDECL nulldrv_GetKeyboardLayoutName( LPWSTR name ) diff --git a/dlls/user32/input.c b/dlls/user32/input.c index d3dcf375746..1f795e43545 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -1083,7 +1083,11 @@ UINT WINAPI GetKBCodePage(void) */ HKL WINAPI GetKeyboardLayout(DWORD thread_id) { - return USER_Driver->pGetKeyboardLayout(thread_id); + HKL layout; + + if ((layout = USER_Driver->pGetKeyboardLayout( thread_id )) != (HKL)~0) return layout; + + return get_locale_kbd_layout(); }
/**************************************************************************** diff --git a/dlls/wineandroid.drv/keyboard.c b/dlls/wineandroid.drv/keyboard.c index 04565c3fad8..803f13d8f39 100644 --- a/dlls/wineandroid.drv/keyboard.c +++ b/dlls/wineandroid.drv/keyboard.c @@ -878,26 +878,6 @@ UINT CDECL ANDROID_MapVirtualKeyEx( UINT code, UINT maptype, HKL hkl ) }
-/*********************************************************************** - * ANDROID_GetKeyboardLayout - */ -HKL CDECL ANDROID_GetKeyboardLayout( DWORD thread_id ) -{ - ULONG_PTR layout = GetUserDefaultLCID(); - LANGID langid; - static int once; - - langid = PRIMARYLANGID(LANGIDFROMLCID( layout )); - if (langid == LANG_CHINESE || langid == LANG_JAPANESE || langid == LANG_KOREAN) - layout = MAKELONG( layout, 0xe001 ); /* IME */ - else - layout |= layout << 16; - - if (!once++) FIXME( "returning %lx\n", layout ); - return (HKL)layout; -} - - /*********************************************************************** * ANDROID_VkKeyScanEx */ diff --git a/dlls/wineandroid.drv/wineandroid.drv.spec b/dlls/wineandroid.drv/wineandroid.drv.spec index 6f27c1586b3..d79665ecc72 100644 --- a/dlls/wineandroid.drv/wineandroid.drv.spec +++ b/dlls/wineandroid.drv/wineandroid.drv.spec @@ -5,7 +5,6 @@ # USER driver
@ cdecl GetKeyNameText(long ptr long) ANDROID_GetKeyNameText -@ cdecl GetKeyboardLayout(long) ANDROID_GetKeyboardLayout @ cdecl MapVirtualKeyEx(long long long) ANDROID_MapVirtualKeyEx @ cdecl VkKeyScanEx(long long) ANDROID_VkKeyScanEx @ cdecl SetCursor(long) ANDROID_SetCursor
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/user32/driver.c | 13 ------------- dlls/user32/input.c | 19 +++++++++++++++---- dlls/user32/user_private.h | 1 - dlls/winemac.drv/keyboard.c | 15 --------------- dlls/winemac.drv/winemac.drv.spec | 1 - dlls/winex11.drv/keyboard.c | 16 +--------------- dlls/winex11.drv/winex11.drv.spec | 1 - 7 files changed, 16 insertions(+), 50 deletions(-)
diff --git a/dlls/user32/driver.c b/dlls/user32/driver.c index efaa04db096..51149f1cbb1 100644 --- a/dlls/user32/driver.c +++ b/dlls/user32/driver.c @@ -110,7 +110,6 @@ static const USER_DRIVER *load_driver(void) GET_USER_FUNC(GetKeyNameText); GET_USER_FUNC(GetKeyboardLayout); GET_USER_FUNC(GetKeyboardLayoutList); - GET_USER_FUNC(GetKeyboardLayoutName); GET_USER_FUNC(LoadKeyboardLayout); GET_USER_FUNC(MapVirtualKeyEx); GET_USER_FUNC(RegisterHotKey); @@ -211,11 +210,6 @@ static HKL CDECL nulldrv_GetKeyboardLayout( DWORD thread_id ) return (HKL)~0; /* use default implementation */ }
-static BOOL CDECL nulldrv_GetKeyboardLayoutName( LPWSTR name ) -{ - return FALSE; -} - static HKL CDECL nulldrv_LoadKeyboardLayout( LPCWSTR name, UINT flags ) { return 0; @@ -429,7 +423,6 @@ static USER_DRIVER null_driver = nulldrv_GetKeyNameText, nulldrv_GetKeyboardLayout, nulldrv_GetKeyboardLayoutList, - nulldrv_GetKeyboardLayoutName, nulldrv_LoadKeyboardLayout, nulldrv_MapVirtualKeyEx, nulldrv_RegisterHotKey, @@ -512,11 +505,6 @@ static UINT CDECL loaderdrv_GetKeyboardLayoutList( INT size, HKL *layouts ) return load_driver()->pGetKeyboardLayoutList( size, layouts ); }
-static BOOL CDECL loaderdrv_GetKeyboardLayoutName( LPWSTR name ) -{ - return load_driver()->pGetKeyboardLayoutName( name ); -} - static HKL CDECL loaderdrv_LoadKeyboardLayout( LPCWSTR name, UINT flags ) { return load_driver()->pLoadKeyboardLayout( name, flags ); @@ -644,7 +632,6 @@ static USER_DRIVER lazy_load_driver = loaderdrv_GetKeyNameText, loaderdrv_GetKeyboardLayout, loaderdrv_GetKeyboardLayoutList, - loaderdrv_GetKeyboardLayoutName, loaderdrv_LoadKeyboardLayout, loaderdrv_MapVirtualKeyEx, loaderdrv_RegisterHotKey, diff --git a/dlls/user32/input.c b/dlls/user32/input.c index 1f795e43545..92376bb3078 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -1105,14 +1105,25 @@ BOOL WINAPI GetKeyboardLayoutNameA(LPSTR pszKLID) /**************************************************************************** * GetKeyboardLayoutNameW (USER32.@) */ -BOOL WINAPI GetKeyboardLayoutNameW(LPWSTR pwszKLID) +BOOL WINAPI GetKeyboardLayoutNameW( WCHAR *name ) { - if (!pwszKLID) + DWORD tmp; + + TRACE_(keyboard)( "name %p\n", name ); + + if (!name) { - SetLastError(ERROR_NOACCESS); + SetLastError( ERROR_NOACCESS ); return FALSE; } - return USER_Driver->pGetKeyboardLayoutName(pwszKLID); + + layout = GetKeyboardLayout( 0 ); + tmp = HandleToUlong( layout ); + if (HIWORD( tmp ) == LOWORD( tmp )) tmp = LOWORD( tmp ); + swprintf( name, KL_NAMELENGTH, L"%08X", tmp ); + + TRACE_(keyboard)( "ret %s\n", debugstr_w( name ) ); + return TRUE; }
/**************************************************************************** diff --git a/dlls/user32/user_private.h b/dlls/user32/user_private.h index 5f8059a12a0..de88a3128d7 100644 --- a/dlls/user32/user_private.h +++ b/dlls/user32/user_private.h @@ -67,7 +67,6 @@ typedef struct tagUSER_DRIVER { INT (CDECL *pGetKeyNameText)(LONG, LPWSTR, INT); HKL (CDECL *pGetKeyboardLayout)(DWORD); UINT (CDECL *pGetKeyboardLayoutList)(INT, HKL *); - BOOL (CDECL *pGetKeyboardLayoutName)(LPWSTR); HKL (CDECL *pLoadKeyboardLayout)(LPCWSTR, UINT); UINT (CDECL *pMapVirtualKeyEx)(UINT, UINT, HKL); BOOL (CDECL *pRegisterHotKey)(HWND, UINT, UINT); diff --git a/dlls/winemac.drv/keyboard.c b/dlls/winemac.drv/keyboard.c index 6732c5755ee..99367643b8f 100644 --- a/dlls/winemac.drv/keyboard.c +++ b/dlls/winemac.drv/keyboard.c @@ -1336,21 +1336,6 @@ UINT CDECL macdrv_GetKeyboardLayoutList(INT size, HKL *list) return count; }
-/*********************************************************************** - * GetKeyboardLayoutName (MACDRV.@) - */ -BOOL CDECL macdrv_GetKeyboardLayoutName(LPWSTR name) -{ - static const WCHAR formatW[] = {'%','0','8','x',0}; - DWORD layout; - - layout = HandleToUlong(macdrv_GetKeyboardLayout(0)); - if (HIWORD(layout) == LOWORD(layout)) layout = LOWORD(layout); - sprintfW(name, formatW, layout); - TRACE("returning %s\n", debugstr_w(name)); - return TRUE; -} -
/*********************************************************************** * MapVirtualKeyEx (MACDRV.@) diff --git a/dlls/winemac.drv/winemac.drv.spec b/dlls/winemac.drv/winemac.drv.spec index 39cf33370b4..45a62255b86 100644 --- a/dlls/winemac.drv/winemac.drv.spec +++ b/dlls/winemac.drv/winemac.drv.spec @@ -16,7 +16,6 @@ @ cdecl GetCursorPos(ptr) macdrv_GetCursorPos @ cdecl GetKeyboardLayout(long) macdrv_GetKeyboardLayout @ cdecl GetKeyboardLayoutList(long ptr) macdrv_GetKeyboardLayoutList -@ cdecl GetKeyboardLayoutName(ptr) macdrv_GetKeyboardLayoutName @ cdecl GetKeyNameText(long ptr long) macdrv_GetKeyNameText @ cdecl MapVirtualKeyEx(long long long) macdrv_MapVirtualKeyEx @ cdecl MsgWaitForMultipleObjectsEx(long ptr long long long) macdrv_MsgWaitForMultipleObjectsEx diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c index d583c8588cd..cfae93498c5 100644 --- a/dlls/winex11.drv/keyboard.c +++ b/dlls/winex11.drv/keyboard.c @@ -1563,20 +1563,6 @@ static HKL get_locale_kbd_layout(void) return (HKL)layout; }
-/*********************************************************************** - * GetKeyboardLayoutName (X11DRV.@) - */ -BOOL CDECL X11DRV_GetKeyboardLayoutName(LPWSTR name) -{ - static const WCHAR formatW[] = {'%','0','8','x',0}; - DWORD layout; - - layout = HandleToUlong( get_locale_kbd_layout() ); - if (HIWORD(layout) == LOWORD(layout)) layout = LOWORD(layout); - sprintfW(name, formatW, layout); - TRACE("returning %s\n", debugstr_w(name)); - return TRUE; -}
static void set_kbd_layout_preload_key(void) { @@ -1595,7 +1581,7 @@ static void set_kbd_layout_preload_key(void) RegCloseKey(hkey); return; } - if (X11DRV_GetKeyboardLayoutName(layout)) + if (GetKeyboardLayoutNameW( layout )) RegSetValueExW(hkey, one, 0, REG_SZ, (const BYTE *)layout, sizeof(layout));
RegCloseKey(hkey); diff --git a/dlls/winex11.drv/winex11.drv.spec b/dlls/winex11.drv/winex11.drv.spec index c0e24d8fe82..bde1d146ba1 100644 --- a/dlls/winex11.drv/winex11.drv.spec +++ b/dlls/winex11.drv/winex11.drv.spec @@ -8,7 +8,6 @@ @ cdecl Beep() X11DRV_Beep @ cdecl GetKeyNameText(long ptr long) X11DRV_GetKeyNameText @ cdecl GetKeyboardLayout(long) X11DRV_GetKeyboardLayout -@ cdecl GetKeyboardLayoutName(ptr) X11DRV_GetKeyboardLayoutName @ cdecl LoadKeyboardLayout(wstr long) X11DRV_LoadKeyboardLayout @ cdecl MapVirtualKeyEx(long long long) X11DRV_MapVirtualKeyEx @ cdecl ToUnicodeEx(long long ptr ptr long long long) X11DRV_ToUnicodeEx
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=89782
Your paranoid android.
=== debiant2 (build log) ===
../wine/dlls/user32/input.c:1120:5: error: ‘layout’ undeclared (first use in this function) Task: The win32 Wine build failed
=== debiant2 (build log) ===
../wine/dlls/user32/input.c:1120:5: error: ‘layout’ undeclared (first use in this function) Task: The wow64 Wine build failed
On 5/3/21 12:43 PM, Marvin wrote:
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=89782
Your paranoid android.
=== debiant2 (build log) ===
../wine/dlls/user32/input.c:1120:5: error: ‘layout’ undeclared (first use in this function) Task: The win32 Wine build failed
=== debiant2 (build log) ===
../wine/dlls/user32/input.c:1120:5: error: ‘layout’ undeclared (first use in this function) Task: The wow64 Wine build failed
Oops, last minute split broke it of course. Please ignore PATCH 4-6, I will resend them later (separately assuming the first 3 are fine).
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/user32/input.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c index 92376bb3078..0304b7fb49d 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -1107,7 +1107,10 @@ BOOL WINAPI GetKeyboardLayoutNameA(LPSTR pszKLID) */ BOOL WINAPI GetKeyboardLayoutNameW( WCHAR *name ) { - DWORD tmp; + WCHAR klid[KL_NAMELENGTH], value[5]; + DWORD value_size, tmp, i = 0; + HKEY hkey; + HKL layout;
TRACE_(keyboard)( "name %p\n", name );
@@ -1122,6 +1125,24 @@ BOOL WINAPI GetKeyboardLayoutNameW( WCHAR *name ) if (HIWORD( tmp ) == LOWORD( tmp )) tmp = LOWORD( tmp ); swprintf( name, KL_NAMELENGTH, L"%08X", tmp );
+ if (!RegOpenKeyW( HKEY_LOCAL_MACHINE, L"System\CurrentControlSet\Control\Keyboard Layouts", &hkey )) + { + while (!RegEnumKeyW( hkey, i++, klid, ARRAY_SIZE(klid) )) + { + tmp = wcstoul( klid, NULL, 16 ); + value_size = sizeof(value); + if (!RegGetValueW( hkey, klid, L"Layout Id", RRF_RT_REG_SZ, NULL, (void *)&value, &value_size )) + tmp = MAKELONG( LOWORD( tmp ), 0xf000 | (wcstoul( value, NULL, 16 ) & 0xfff) ); + + if (layout == (HKL)(ULONG_PTR)tmp) + { + lstrcpynW( name, klid, KL_NAMELENGTH ); + break; + } + } + RegCloseKey( hkey ); + } + TRACE_(keyboard)( "ret %s\n", debugstr_w( name ) ); return TRUE; }
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=89783
Your paranoid android.
=== debiant2 (build log) ===
002c:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 002c:err:winediag:nodrv_CreateWindow The explorer process failed to start. 0040:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0040:err:winediag:nodrv_CreateWindow The explorer process failed to start. 0058:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0058:err:winediag:nodrv_CreateWindow The explorer process failed to start. 002c:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 002c:err:winediag:nodrv_CreateWindow The explorer process failed to start. 0040:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0040:err:winediag:nodrv_CreateWindow The explorer process failed to start. 0058:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0058:err:winediag:nodrv_CreateWindow The explorer process failed to start.
=== debiant2 (build log) ===
002c:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 002c:err:winediag:nodrv_CreateWindow The explorer process failed to start. 0040:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0040:err:winediag:nodrv_CreateWindow The explorer process failed to start. 0058:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0058:err:winediag:nodrv_CreateWindow The explorer process failed to start. 00ac:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 00ac:err:winediag:nodrv_CreateWindow The explorer process failed to start. 002c:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 002c:err:winediag:nodrv_CreateWindow The explorer process failed to start. 0040:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0040:err:winediag:nodrv_CreateWindow The explorer process failed to start. 0058:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0058:err:winediag:nodrv_CreateWindow The explorer process failed to start. 00ac:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 00ac:err:winediag:nodrv_CreateWindow The explorer process failed to start.
To match VkKeyScanW and pass corresponding tests.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/user32/input.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c index 0304b7fb49d..743e8fe8483 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -1300,8 +1300,11 @@ INT WINAPI ToUnicodeEx( UINT virt, UINT scan, const BYTE *state, case VK_OEM_4: buffer[0] = 0x1b; break; case VK_OEM_5: buffer[0] = 0x1c; break; case VK_OEM_6: buffer[0] = 0x1d; break; - case VK_SUBTRACT: buffer[0] = 0x1e; break; + case '6': buffer[0] = shift ? 0x1e : 0; break; + case VK_OEM_MINUS: buffer[0] = shift ? 0x1f : 0; break; + case VK_BACK: buffer[0] = 0x7f; break; case VK_RETURN: buffer[0] = shift ? 0 : '\n'; break; + case '2': buffer[0] = shift ? 0xffff : 0xf000; break; case VK_SPACE: buffer[0] = ' '; break; default: if (virt >= 'A' && virt <= 'Z') buffer[0] = virt - 'A' + 1; @@ -1312,6 +1315,7 @@ INT WINAPI ToUnicodeEx( UINT virt, UINT scan, const BYTE *state, else buffer[0] = 0; buffer[1] = 0; len = wcslen( buffer ); + if (buffer[0] == 0xffff) buffer[0] = 0; lstrcpynW( str, buffer, size );
TRACE_(keyboard)( "ret %d, str %s.\n", len, debugstr_w(str) );
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=89784
Your paranoid android.
=== debiant2 (32 bit Chinese:China report) ===
user32: win.c:10155: Test failed: Expected foreground window 0, got 00EB00D4 win.c:10161: Test failed: Expected foreground window 000E0120, got 00EB00D4
=== debiant2 (build log) ===
002c:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 002c:err:winediag:nodrv_CreateWindow The explorer process failed to start. 0040:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0040:err:winediag:nodrv_CreateWindow The explorer process failed to start. 0058:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0058:err:winediag:nodrv_CreateWindow The explorer process failed to start. 002c:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 002c:err:winediag:nodrv_CreateWindow The explorer process failed to start. 0040:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0040:err:winediag:nodrv_CreateWindow The explorer process failed to start. 0058:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0058:err:winediag:nodrv_CreateWindow The explorer process failed to start.
=== debiant2 (64 bit WoW report) ===
user32: monitor.c:1108: Test failed: Expected 480, got 960. win.c:11546: Test failed: got normal pos (200,88)-(400,288) win.c:11549: Test failed: got window rect (200,88)-(400,288) win.c:11562: Test failed: got normal pos (200,88)-(400,288)
=== debiant2 (build log) ===
002c:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 002c:err:winediag:nodrv_CreateWindow The explorer process failed to start. 0040:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0040:err:winediag:nodrv_CreateWindow The explorer process failed to start. 0058:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0058:err:winediag:nodrv_CreateWindow The explorer process failed to start. 00ac:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 00ac:err:winediag:nodrv_CreateWindow The explorer process failed to start. 002c:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 002c:err:winediag:nodrv_CreateWindow The explorer process failed to start. 0040:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0040:err:winediag:nodrv_CreateWindow The explorer process failed to start. 0058:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0058:err:winediag:nodrv_CreateWindow The explorer process failed to start. 00ac:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 00ac:err:winediag:nodrv_CreateWindow The explorer process failed to start.
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=89779
Your paranoid android.
=== debiant2 (32 bit Chinese:China report) ===
user32: win.c:11546: Test failed: got normal pos (200,88)-(400,288) win.c:11549: Test failed: got window rect (200,88)-(400,288) win.c:11562: Test failed: got normal pos (200,88)-(400,288)