Win32: Fix key name code changing global key state

This prevents glfwInit from potentially clobbering the dead key state
for other applications.

Closes #2018
master
Camilla Löwy ago%!(EXTRA string=3 years) committed by Camilla Löwy
parent 789d2924c0
commit ad01c1b614
  1. 1
      CONTRIBUTORS.md
  2. 2
      README.md
  3. 9
      src/win32_init.c

@ -10,6 +10,7 @@ video tutorials.
- Matt Arsenault
- ashishgamedev
- David Avedissian
- Luca Bacci
- Keith Bauer
- John Bartholomew
- Coşku Baş

@ -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)

@ -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)

Loading…
Cancel
Save