From: Rémi Bernon rbernon@codeweavers.com
--- dlls/user32/input.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c index 2f4dc06f6ce..87ce153ed54 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -439,6 +439,7 @@ BOOL WINAPI BlockInput(BOOL fBlockIt) HKL WINAPI LoadKeyboardLayoutW( const WCHAR *name, UINT flags ) { WCHAR layout_path[MAX_PATH], value[5]; + LCID locale = GetUserDefaultLCID(); DWORD value_size, tmp; HKEY hkey; HKL layout; @@ -456,11 +457,12 @@ HKL WINAPI LoadKeyboardLayoutW( const WCHAR *name, UINT flags ) { value_size = sizeof(value); if (!RegGetValueW( hkey, NULL, L"Layout Id", RRF_RT_REG_SZ, NULL, (void *)&value, &value_size )) - layout = UlongToHandle( MAKELONG( LOWORD( tmp ), 0xf000 | (wcstoul( value, NULL, 16 ) & 0xfff) ) ); + layout = UlongToHandle( 0xf000 | (wcstoul( value, NULL, 16 ) & 0xfff) );
RegCloseKey( hkey ); }
+ layout = UlongToHandle( MAKELONG( locale, LOWORD( layout ) ) ); if ((flags & KLF_ACTIVATE) && NtUserActivateKeyboardLayout( layout, 0 )) return layout;
/* FIXME: semi-stub: returning default layout */