diff --git a/input/drivers/winraw_input.c b/input/drivers/winraw_input.c index eee6e56ff1..0f97d33aee 100644 --- a/input/drivers/winraw_input.c +++ b/input/drivers/winraw_input.c @@ -449,6 +449,14 @@ static void winraw_poll(void *d) memcpy(&wr->keyboard, g_keyboard, sizeof(winraw_keyboard_t)); + /* following keys are not handled by windows raw input api */ + wr->keyboard.keys[VK_LCONTROL] = GetAsyncKeyState(VK_LCONTROL) >> 1 ? 1 : 0; + wr->keyboard.keys[VK_RCONTROL] = GetAsyncKeyState(VK_RCONTROL) >> 1 ? 1 : 0; + wr->keyboard.keys[VK_LMENU] = GetAsyncKeyState(VK_LMENU) >> 1 ? 1 : 0; + wr->keyboard.keys[VK_RMENU] = GetAsyncKeyState(VK_RMENU) >> 1 ? 1 : 0; + wr->keyboard.keys[VK_LSHIFT] = GetAsyncKeyState(VK_LSHIFT) >> 1 ? 1 : 0; + wr->keyboard.keys[VK_RSHIFT] = GetAsyncKeyState(VK_RSHIFT) >> 1 ? 1 : 0; + for (i = 0; i < g_mouse_cnt; ++i) { wr->mice[i].x = g_mice[i].x;