Skip to content

Commit

Permalink
Win32: Fix key name code changing global key state
Browse files Browse the repository at this point in the history
This prevents glfwInit from potentially clobbering the dead key state
for other applications.

Closes glfw#2018
elmindreda committed Mar 2, 2022
1 parent 789d292 commit ad01c1b
Showing 3 changed files with 10 additions and 2 deletions.
1 change: 1 addition & 0 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -10,6 +10,7 @@ video tutorials.
- Matt Arsenault
- ashishgamedev
- David Avedissian
- Luca Bacci
- Keith Bauer
- John Bartholomew
- Coşku Baş
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -205,6 +205,8 @@ information on what to include when reporting a bug.
- [Win32] Bugfix: Content scale queries could fail silently (#1615)
- [Win32] Bugfix: Content scales could have garbage values if monitor was recently
disconnected (#1615)
- [Win32] Bugfix: Key name update modified global key state on Windows 10 1607
and later (#2018)
- [Cocoa] Added support for `VK_EXT_metal_surface` (#1619)
- [Cocoa] Added locating the Vulkan loader at runtime in an application bundle
- [Cocoa] Moved main menu creation to GLFW initialization time (#1649)
9 changes: 7 additions & 2 deletions src/win32_init.c
Original file line number Diff line number Diff line change
@@ -458,6 +458,11 @@ void _glfwUpdateKeyNamesWin32(void)
{
int key;
BYTE state[256] = {0};
UINT flags = 0;

// Avoid modifying the global key state if supported
if (_glfwIsWindows10AnniversaryUpdateOrGreaterWin32())
flags = (1 << 2);

memset(_glfw.win32.keynames, 0, sizeof(_glfw.win32.keynames));

@@ -487,13 +492,13 @@ void _glfwUpdateKeyNamesWin32(void)

length = ToUnicode(vk, scancode, state,
chars, sizeof(chars) / sizeof(WCHAR),
0);
flags);

if (length == -1)
{
length = ToUnicode(vk, scancode, state,
chars, sizeof(chars) / sizeof(WCHAR),
0);
flags);
}

if (length < 1)

0 comments on commit ad01c1b

Please sign in to comment.