#include "pch.h" #include "keyboard_state.h" bool winkey_held() { auto left = GetAsyncKeyState(VK_LWIN); auto right = GetAsyncKeyState(VK_RWIN); return (left & 0x8000) || (right & 0x8000); } bool only_winkey_key_held() { /* There are situations, when some of the keys are not registered correctly by GetKeyboardState. The M key can get stuck as "pressed" after Win+M, and Shift etc. keys are not always reported as expected. */ for (int vk = 0; vk <= VK_OEM_CLEAR; ++vk) { if (vk == VK_LWIN || vk == VK_RWIN) continue; if (GetAsyncKeyState(vk) & 0x8000) return false; } return true; }