Skip to content

Commit

Permalink
Win32: Use non-async key state for modifier hack
Browse files Browse the repository at this point in the history
The synchronous key state seems to make more sense in context.
  • Loading branch information
elmindreda committed Jan 16, 2020
1 parent 562c17d commit a491b06
Showing 1 changed file with 2 additions and 24 deletions.
26 changes: 2 additions & 24 deletions src/win32_window.c
Original file line number Diff line number Diff line change
Expand Up @@ -448,28 +448,6 @@ static int getKeyMods(void)
return mods;
}

// Retrieves and translates modifier keys
//
static int getAsyncKeyMods(void)
{
int mods = 0;

if (GetAsyncKeyState(VK_SHIFT) & 0x8000)
mods |= GLFW_MOD_SHIFT;
if (GetAsyncKeyState(VK_CONTROL) & 0x8000)
mods |= GLFW_MOD_CONTROL;
if (GetAsyncKeyState(VK_MENU) & 0x8000)
mods |= GLFW_MOD_ALT;
if ((GetAsyncKeyState(VK_LWIN) | GetAsyncKeyState(VK_RWIN)) & 0x8000)
mods |= GLFW_MOD_SUPER;
if (GetAsyncKeyState(VK_CAPITAL) & 1)
mods |= GLFW_MOD_CAPS_LOCK;
if (GetAsyncKeyState(VK_NUMLOCK) & 1)
mods |= GLFW_MOD_NUM_LOCK;

return mods;
}

// Translates a Windows key to the corresponding GLFW key
//
static int translateKey(WPARAM wParam, LPARAM lParam)
Expand Down Expand Up @@ -1961,12 +1939,12 @@ void _glfwPlatformPollEvents(void)
const int key = keys[i][1];
const int scancode = _glfw.win32.scancodes[key];

if ((GetAsyncKeyState(vk) & 0x8000))
if ((GetKeyState(vk) & 0x8000))
continue;
if (window->keys[key] != GLFW_PRESS)
continue;

_glfwInputKey(window, key, scancode, GLFW_RELEASE, getAsyncKeyMods());
_glfwInputKey(window, key, scancode, GLFW_RELEASE, getKeyMods());
}
}
}
Expand Down

0 comments on commit a491b06

Please sign in to comment.