Original file line number Diff line number Diff line change
@@ -0,0 +1,261 @@
From f2347ae7216626d248cfaf9445862561b2b5eef7 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Mon, 1 Jul 2019 09:58:55 +1000
Subject: [PATCH] loader: Add Keyboard Layouts registry enteries.

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
---
loader/wine.inf.in | 209 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 209 insertions(+)

diff --git a/loader/wine.inf.in b/loader/wine.inf.in
index ff601e41b26..6ffb8c56d87 100644
--- a/loader/wine.inf.in
+++ b/loader/wine.inf.in
@@ -63,6 +63,7 @@ AddReg=\
Debugger,\
DirectX,\
Fonts,\
+ KeyboardLayouts,\
MCI,\
Misc,\
OLE,\
@@ -87,6 +88,7 @@ AddReg=\
Debugger,\
DirectX,\
Fonts,\
+ KeyboardLayouts,\
MCI,\
Misc,\
OLE,\
@@ -113,6 +115,7 @@ AddReg=\
Debugger,\
DirectX,\
Fonts,\
+ KeyboardLayouts,\
MCI,\
Misc,\
OLE,\
@@ -160,6 +163,7 @@ AddReg=\
CurrentVersionWow64,\
Debugger,\
DirectX,\
+ KeyboardLayouts,\
MCI,\
Misc,\
Tapi,\
@@ -597,6 +601,211 @@ HKCU,Software\Microsoft\Windows\Shell\Associations\UrlAssociations\ftp\UserChoic
HKCU,Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice,"ProgId",,"http"
HKCU,Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice,"ProgId",,"https"

+[KeyboardLayouts]
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000401,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000402,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000404,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000405,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000406,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000407,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000408,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000409,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000040a,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000040b,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000040c,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000040d,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000040e,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000040f,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000410,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000412,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000413,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000414,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000415,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000416,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000418,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000419,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000041a,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000041b,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000041c,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000041d,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000041e,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000041f,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000420,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000422,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000423,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000424,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000425,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000426,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000427,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000428,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000429,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000042a,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000042b,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000042c,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000042e,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000042f,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000432,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000437,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000438,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000439,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000043a,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000043b,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000043f,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000440,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000442,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000444,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000445,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000446,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000447,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000448,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000449,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000044a,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000044b,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000044c,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000044d,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000044e,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000450,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000451,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000452,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000453,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000454,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000045a,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000045b,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000045c,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000461,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000463,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000465,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000468,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000046a,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000046c,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000046d,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000046e,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000046f,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000470,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000474,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000475,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000480,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000481,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000485,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000488,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000492,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000804,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000807,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000809,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000080a,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000080c,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000813,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000816,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000081a,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000082c,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000083b,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000843,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000850,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000085d,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000085f,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000c04,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000c0c,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000c1a,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00001004,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00001009,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000100c,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000105f,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00001404,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00001809,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000201a,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00004009,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010401,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010402,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010405,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010407,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010408,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010409,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001040a,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001040e,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010410,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010415,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010416,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010418,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010419,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001041b,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001041e,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001041f,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010426,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010427,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001042b,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001042c,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001042e,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001042f,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010437,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010439,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001043a,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001043b,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010444,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010445,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010451,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010453,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001045a,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001045b,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001045c,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001045d,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010465,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010480,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001080c,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001083b,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010850,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010c00,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00011009,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0001105f,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00011809,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00020401,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00020402,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00020405,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00020408,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00020409,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0002040d,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00020418,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00020419,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0002041e,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00020422,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00020426,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00020427,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0002042b,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0002042e,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00020437,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00020445,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0002083b,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00020c00,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00030402,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00030408,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00030409,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0003041e,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0003042b,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00030437,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00030c00,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00040402,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00040408,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00040409,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00040437,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00040c00,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00050408,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00050409,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00050429,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00060408,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00070c00,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00080c00,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00090c00,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\000a0c00,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\000b0c00,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\000c0c00,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\000d0c00,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\000e0c00,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\000f0c00,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00100c00,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00110c00,,16
+HKLM,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00120c00,,16
+
[OLE]
HKLM,"Software\Microsoft\OLE","EnableDCOM",,"Y"
HKLM,"Software\Microsoft\OLE","EnableRemoteConnect",,"N"
--
2.35.1

Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
From f57e7a06cffc47773c647a10ed4d298b58fbd408 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 9 Jul 2019 14:13:28 +1000
Subject: [PATCH] user32: Do not enumerate the registry in
GetKeyboardLayoutList().

This function returns the current list of *installed* Keyboard layouts
not the complete list from the registry.
---
dlls/user32/input.c | 1 -
dlls/user32/tests/input.c | 35 +++++++++++++++++++++++++++++++++++
dlls/win32u/input.c | 33 +--------------------------------
3 files changed, 36 insertions(+), 33 deletions(-)

diff --git a/dlls/user32/input.c b/dlls/user32/input.c
index c5387cf9212..2507a86e3b6 100644
--- a/dlls/user32/input.c
+++ b/dlls/user32/input.c
@@ -494,7 +494,6 @@ BOOL WINAPI UnloadKeyboardLayout( HKL layout )
return FALSE;
}

-
/***********************************************************************
* EnableMouseInPointer (USER32.@)
*/
diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c
index bf913b8e6a6..8ac46bedc71 100644
--- a/dlls/user32/tests/input.c
+++ b/dlls/user32/tests/input.c
@@ -4837,6 +4837,40 @@ static void test_EnableMouseInPointer( char **argv, BOOL enable )
CloseHandle( info.hProcess );
}

+static void test_GetKeyboardLayoutList(void)
+{
+ int cnt, cnt2;
+ HKL *layouts;
+ ULONG_PTR baselayout;
+ LANGID langid;
+
+ baselayout = GetUserDefaultLCID();
+ langid = PRIMARYLANGID(LANGIDFROMLCID(baselayout));
+ if (langid == LANG_CHINESE || langid == LANG_JAPANESE || langid == LANG_KOREAN)
+ baselayout = MAKELONG( baselayout, 0xe001 ); /* IME */
+ else
+ baselayout |= baselayout << 16;
+
+ cnt = GetKeyboardLayoutList(0, NULL);
+ /* Most users will not have more than a few keyboard layouts installed at a time. */
+ ok(cnt > 0 && cnt < 10, "Layout count %d\n", cnt);
+ if (cnt > 0)
+ {
+ layouts = HeapAlloc(GetProcessHeap(), 0, sizeof(*layouts) * cnt );
+
+ cnt2 = GetKeyboardLayoutList(cnt, layouts);
+ ok(cnt == cnt2, "wrong value %d!=%d\n", cnt, cnt2);
+ for(cnt = 0; cnt < cnt2; cnt++)
+ {
+ if(layouts[cnt] == (HKL)baselayout)
+ break;
+ }
+ ok(cnt < cnt2, "Didnt find current keyboard\n");
+
+ HeapFree(GetProcessHeap(), 0, layouts);
+ }
+}
+
START_TEST(input)
{
char **argv;
@@ -4887,6 +4921,7 @@ START_TEST(input)
test_GetRawInputBuffer();
test_RegisterRawInputDevices();
test_rawinput(argv[0]);
+ test_GetKeyboardLayoutList();
test_DefRawInputProc();

if(pGetMouseMovePointsEx)
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
index fd16d03f733..fb452843803 100644
--- a/dlls/win32u/input.c
+++ b/dlls/win32u/input.c
@@ -934,11 +934,7 @@ HKL WINAPI NtUserActivateKeyboardLayout( HKL layout, UINT flags )
*/
UINT WINAPI NtUserGetKeyboardLayoutList( INT size, HKL *layouts )
{
- char buffer[4096];
- KEY_NODE_INFORMATION *key_info = (KEY_NODE_INFORMATION *)buffer;
- KEY_VALUE_PARTIAL_INFORMATION *value_info = (KEY_VALUE_PARTIAL_INFORMATION *)buffer;
- DWORD count, tmp, i = 0;
- HKEY hkey, subkey;
+ DWORD count;
HKL layout;

TRACE_(keyboard)( "size %d, layouts %p.\n", size, layouts );
@@ -1277,33 +1273,6 @@ UINT WINAPI NtUserGetKeyboardLayoutList( INT size, HKL *layouts )
if (size && layouts)
{
layouts[count - 1] = layout;
- if (count == size) return count;
- }
-
- if ((hkey = reg_open_key( NULL, keyboard_layouts_keyW, sizeof(keyboard_layouts_keyW) )))
- {
- while (!NtEnumerateKey( hkey, i++, KeyNodeInformation, key_info,
- sizeof(buffer) - sizeof(WCHAR), &tmp ))
- {
- if (!(subkey = reg_open_key( hkey, key_info->Name, key_info->NameLength ))) continue;
- key_info->Name[key_info->NameLength / sizeof(WCHAR)] = 0;
- tmp = wcstoul( key_info->Name, NULL, 16 );
- if (query_reg_ascii_value( subkey, "Layout Id", value_info, sizeof(buffer) ) &&
- value_info->Type == REG_SZ)
- tmp = 0xf000 | (wcstoul( (const WCHAR *)value_info->Data, NULL, 16 ) & 0xfff);
- NtClose( subkey );
-
- tmp = MAKELONG( LOWORD( layout ), LOWORD( tmp ) );
- if (layout == UlongToHandle( tmp )) continue;
-
- count++;
- if (size && layouts)
- {
- layouts[count - 1] = UlongToHandle( tmp );
- if (count == size) break;
- }
- }
- NtClose( hkey );
}

return count;
--
2.39.0

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fixes: [47439] loader: Add Keyboard Layouts registry enteries.
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
From 0c71b9c48afdc0478941417595998ab21fcf12ae Mon Sep 17 00:00:00 2001
From: Alex Henrie <alexhenrie24@gmail.com>
Date: Tue, 29 Dec 2015 00:48:02 -0700
Subject: [PATCH] mountmgr.sys: Do a device check before returning a default
serial port name.

Fixes https://bugs.winehq.org/show_bug.cgi?id=39793
---
dlls/mountmgr.sys/device.c | 2 +-
dlls/mountmgr.sys/unixlib.c | 22 ++++++++++++++++++++++
dlls/mountmgr.sys/unixlib.h | 1 +
3 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/dlls/mountmgr.sys/device.c b/dlls/mountmgr.sys/device.c
index 328b0b2f344..0757036c8e3 100644
--- a/dlls/mountmgr.sys/device.c
+++ b/dlls/mountmgr.sys/device.c
@@ -1884,7 +1884,7 @@ static BOOL create_port_device( DRIVER_OBJECT *driver, int n, const char *unix_p
UNICODE_STRING nt_name, symlink_name, default_name;
DEVICE_OBJECT *dev_obj;
NTSTATUS status;
- struct set_dosdev_symlink_params params = { dosdevices_path, unix_path };
+ struct set_dosdev_symlink_params params = { dosdevices_path, unix_path, driver == serial_driver };

/* create DOS device */
if (MOUNTMGR_CALL( set_dosdev_symlink, &params )) return FALSE;
diff --git a/dlls/mountmgr.sys/unixlib.c b/dlls/mountmgr.sys/unixlib.c
index 13f6fbecf09..0332f6f6018 100644
--- a/dlls/mountmgr.sys/unixlib.c
+++ b/dlls/mountmgr.sys/unixlib.c
@@ -36,6 +36,7 @@
#ifdef HAVE_SYS_STATVFS_H
# include <sys/statvfs.h>
#endif
+#include <termios.h>
#include <unistd.h>

#include "unixlib.h"
@@ -304,6 +305,27 @@ static NTSTATUS set_dosdev_symlink( void *args )
char *path;
NTSTATUS status = STATUS_SUCCESS;

+#ifdef linux
+ /* Serial port device files almost always exist on Linux even if the corresponding serial
+ * ports don't exist. Do a basic functionality check before advertising a serial port. */
+ if (params->serial)
+ {
+ struct termios tios;
+ int fd;
+
+ if ((fd = open( params->dest, O_RDONLY )) == -1)
+ return FALSE;
+
+ if (tcgetattr( fd, &tios ) == -1)
+ {
+ close( fd );
+ return FALSE;
+ }
+
+ close( fd );
+ }
+#endif
+
if (!(path = get_dosdevices_path( params->dev ))) return STATUS_NO_MEMORY;

if (params->dest && params->dest[0])
diff --git a/dlls/mountmgr.sys/unixlib.h b/dlls/mountmgr.sys/unixlib.h
index d70371876fa..ef5b10732f6 100644
--- a/dlls/mountmgr.sys/unixlib.h
+++ b/dlls/mountmgr.sys/unixlib.h
@@ -90,6 +90,7 @@ struct set_dosdev_symlink_params
{
const char *dev;
const char *dest;
+ BOOL serial;
};

struct get_volume_dos_devices_params
--
2.37.2

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fixes: [39793] Do a device check before returning a default serial port name
15 changes: 12 additions & 3 deletions proton
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ from random import randrange
#To enable debug logging, copy "user_settings.sample.py" to "user_settings.py"
#and edit it if needed.

CURRENT_PREFIX_VERSION="GE-Proton8-3"
CURRENT_PREFIX_VERSION="GE-Proton8-4"

PFX="Proton: "
ld_path_var = "LD_LIBRARY_PATH"
Expand Down Expand Up @@ -1169,11 +1169,12 @@ def default_compat_config():
#affected by CW bug 19126
"536280", #Disintegration
"707030", #POSTAL 4: No Regerts
"794260", #Outward: Definitive Edition
"1328350", #Turbo Overkill
"1331440", #FUSER
"1359980", #POSTAL: Brain Damaged
"1766430", #POSTAL Brain Damaged Demo
"692890", #Roboquest
"794260", #Outward: Definitive Edition
"1328350", #Turbo Overkill
"2001540", #Slayers X Demo

#affected by CW bug 19741
Expand Down Expand Up @@ -1239,6 +1240,12 @@ def default_compat_config():
]:
ret.add("heapdelayfree")

if appid in [
"2630", #Call of Duty 2
]:
ret.add("nofsync")
ret.add("noesync")

if appid in [
# enable dxvknvapi for titles verified to benefit (e.g. working DLSS)
"673130", #amid evil
Expand Down Expand Up @@ -1601,6 +1608,8 @@ class Session:
self.log_file.write("System " + var + ": " + os.environ[var] + "\n")
if var in used_user_settings:
self.log_file.write("User settings " + var + ": " + used_user_settings[var] + "\n")
if var in self.env:
self.log_file.write("Effective " + var + ": " + self.env[var] + "\n")

self.log_file.write("======================\n")
self.log_file.flush()
Expand Down
2 changes: 1 addition & 1 deletion protonfixes
4 changes: 2 additions & 2 deletions user_settings.sample.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
#enable logging
"PROTON_LOG": "1",

#Wine debug logging
"WINEDEBUG": "+timestamp,+pid,+seh,+unwind,+debugstr,+loaddll,+mscoree",
#custom Wine debug logging
#"WINEDEBUG": "+timestamp,+pid,+tid,+seh,+unwind,+threadname,+debugstr,+loaddll,+mscoree",

#DXVK debug logging
"DXVK_LOG_LEVEL": "info",
Expand Down
2 changes: 1 addition & 1 deletion vkd3d-proton
Submodule vkd3d-proton updated 45 files
+3 −1 .github/ISSUE_TEMPLATE/bug_report.md
+2 −1 .gitignore
+77 −0 CHANGELOG.md
+16 −18 README.md
+758 −0 VP_D3D12_VKD3D_PROTON_profile.json
+3 −0 include/vkd3d_shader.h
+9 −1 libs/vkd3d-shader/dxbc.c
+56 −0 libs/vkd3d-shader/dxil.c
+285 −27 libs/vkd3d/device.c
+30 −0 libs/vkd3d/heap.c
+12 −0 libs/vkd3d/memory.c
+2 −1 libs/vkd3d/meta.c
+35 −0 libs/vkd3d/resource.c
+3 −4 libs/vkd3d/shaders/cs_resolve_binary_queries.comp
+12 −6 libs/vkd3d/shaders/cs_resolve_query.comp
+3 −11 libs/vkd3d/state.c
+1 −1 libs/vkd3d/swapchain.c
+61 −0 libs/vkd3d/utils.c
+31 −4 libs/vkd3d/vkd3d_private.h
+3 −0 libs/vkd3d/vulkan_procs.h
+1 −1 meson.build
+511 −0 profiles/PROFILES.md
+18 −0 profiles/generate_profile_solution.sh
+87 −0 profiles/profile-test.cpp
+10 −0 profiles/setup_profile_environment_common.sh
+2 −0 profiles/setup_profile_environment_fl_11_0_baseline.sh
+2 −0 profiles/setup_profile_environment_fl_11_1_baseline.sh
+2 −0 profiles/setup_profile_environment_fl_12_0_baseline.sh
+2 −0 profiles/setup_profile_environment_fl_12_0_optimal.sh
+2 −0 profiles/setup_profile_environment_fl_12_1_baseline.sh
+2 −0 profiles/setup_profile_environment_fl_12_2_baseline.sh
+2 −0 profiles/setup_profile_environment_fl_12_2_optimal.sh
+2 −0 profiles/setup_profile_environment_maximum_nv.sh
+2 −0 profiles/setup_profile_environment_maximum_radv.sh
+1 −1 subprojects/Vulkan-Headers
+1 −1 subprojects/dxil-spirv
+1 −0 tests/d3d12.c
+44 −2 tests/d3d12_crosstest.h
+10 −4 tests/d3d12_pso.c
+4 −5 tests/d3d12_query.c
+351 −0 tests/d3d12_raytracing.c
+9 −0 tests/d3d12_render_target.c
+5 −4 tests/d3d12_sm_advanced.c
+1 −0 tests/d3d12_test_utils.c
+1 −0 tests/d3d12_tests.h
2 changes: 1 addition & 1 deletion wine
Submodule wine updated 212 files
25 changes: 21 additions & 4 deletions wineopenxr/make_openxr
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,20 @@ UNSUPPORTED_EXTENSIONS = [
# Deprecated extensions
"XR_NV_external_memory_capabilities",
"XR_NV_external_memory_win32",

# Not widely supported extensions which require handler wrapping
"XR_MSFT_spatial_graph_bridge",
"XR_ML_compat",
"XR_MSFT_hand_tracking_mesh",
"XR_FB_keyboard_tracking",
"XR_VARJO_marker_tracking",
"XR_HTC_facial_tracking",
"XR_FB_face_tracking",
"XR_HTC_passthrough",
"XR_FB_eye_tracking_social",
"XR_FB_spatial_entity_user",
"XR_FB_body_tracking",
"XR_FB_spatial_entity",
]

ALLOWED_PROTECTS = [
Expand Down Expand Up @@ -1333,7 +1347,7 @@ class XrParam(object):
self.format_conv = "wine_dbgstr_longlong({0})"
elif self.type in ["uint16_t", "uint32_t", "XrBool32"]:
self.format_str = "%u"
elif self.type in ["uint64_t"]:
elif self.type in ["uint64_t","XrAsyncRequestIdFB"]:
self.format_str = "0x%s"
self.format_conv = "wine_dbgstr_longlong({0})"
elif self.type == "HANDLE":
Expand Down Expand Up @@ -1630,10 +1644,13 @@ class XrStruct(Sequence):
return decoupled_structs

def typedef(self):
if self.union:
text = "typedef union {0} {0};\n".format(self.name)
if not self.is_alias():
if self.union:
text = "typedef union {0} {0};\n".format(self.name)
else:
text = "typedef struct {0} {0};\n".format(self.name)
else:
text = "typedef struct {0} {0};\n".format(self.name)
text = ""

for aliasee in self.aliased_by:
text += "typedef {0} {1};\n".format(self.name, aliasee.name)
Expand Down
3 changes: 3 additions & 0 deletions wineopenxr/openxr.c
Original file line number Diff line number Diff line change
Expand Up @@ -2145,6 +2145,8 @@ static XrCompositionLayerBaseHeader *convert_XrCompositionLayer(wine_XrSession *
{
uint32_t i;

WINE_TRACE("Type %u, pNext %p.\n", in_layer->type, in_layer->next);

switch(in_layer->type){
case XR_TYPE_COMPOSITION_LAYER_CUBE_KHR: {
out_layer->cube = *(const XrCompositionLayerCubeKHR *)in_layer;
Expand Down Expand Up @@ -2211,6 +2213,7 @@ static XrCompositionLayerBaseHeader *convert_XrCompositionLayer(wine_XrSession *
((XrCompositionLayerProjectionView *)view)->subImage.swapchain = ((wine_XrSwapchain *)view->subImage.swapchain)->swapchain;
while (view->next)
{
WINE_TRACE("Projection view type %u.\n", ((XrCompositionLayerProjectionView *)view->next)->type);
switch (((XrCompositionLayerProjectionView *)view->next)->type)
{
case XR_TYPE_COMPOSITION_LAYER_DEPTH_INFO_KHR:
Expand Down
239 changes: 167 additions & 72 deletions wineopenxr/openxr_thunks.c

Large diffs are not rendered by default.

71 changes: 41 additions & 30 deletions wineopenxr/openxr_thunks.h

Large diffs are not rendered by default.

2,400 changes: 1,600 additions & 800 deletions wineopenxr/wineopenxr.h

Large diffs are not rendered by default.

5,596 changes: 5,099 additions & 497 deletions wineopenxr/xr.xml

Large diffs are not rendered by default.