diff --git a/reactos/subsystems/win32/win32k/ntuser/input.c b/reactos/subsystems/win32/win32k/ntuser/input.c index 5c7a108e33f..604ede7cabc 100644 --- a/reactos/subsystems/win32/win32k/ntuser/input.c +++ b/reactos/subsystems/win32/win32k/ntuser/input.c @@ -1297,9 +1297,10 @@ IntKeyboardInput(KEYBDINPUT *ki, BOOL Injected) if (ki->dwFlags & KEYEVENTF_KEYUP) { Msg.message = WM_KEYUP; - if ((gQueueKeyStateTable[VK_MENU] & 0x80) && + if (((gQueueKeyStateTable[VK_MENU] & 0x80) && ((wVkStripped == VK_MENU) || (wVkStripped == VK_CONTROL) || !(gQueueKeyStateTable[VK_CONTROL] & 0x80))) + || (wVkStripped == VK_F10)) { if( TrackSysKey == VK_MENU || /* -down/-up sequence */ (wVkStripped != VK_MENU)) /* -down...-up */ @@ -1311,8 +1312,9 @@ IntKeyboardInput(KEYBDINPUT *ki, BOOL Injected) else { Msg.message = WM_KEYDOWN; - if ((gQueueKeyStateTable[VK_MENU] & 0x80 || wVkStripped == VK_MENU) && + if (((gQueueKeyStateTable[VK_MENU] & 0x80 || wVkStripped == VK_MENU) && !(gQueueKeyStateTable[VK_CONTROL] & 0x80 || wVkStripped == VK_CONTROL)) + || (wVkStripped == VK_F10)) { Msg.message = WM_SYSKEYDOWN; TrackSysKey = wVkStripped; diff --git a/reactos/subsystems/win32/win32k/ntuser/msgqueue.c b/reactos/subsystems/win32/win32k/ntuser/msgqueue.c index 36aa74c3bec..2c754cdcbbc 100644 --- a/reactos/subsystems/win32/win32k/ntuser/msgqueue.c +++ b/reactos/subsystems/win32/win32k/ntuser/msgqueue.c @@ -1006,8 +1006,7 @@ MsqPostMessage(PUSER_MESSAGE_QUEUE MessageQueue, MSG* Msg, BOOLEAN HardwareMessa InsertTailList(&MessageQueue->HardwareMessagesListHead, &Message->ListEntry); - if (MessageBits & QS_KEY) - update_input_key_state( MessageQueue, Msg ); + update_input_key_state( MessageQueue, Msg ); } Message->QS_Flags = MessageBits;