[NTUSER] Support MK_SHIFT/MK_CONTROL of mouse messages (#2038)
authorKatayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Sat, 16 Nov 2019 00:49:49 +0000 (09:49 +0900)
committerGitHub <noreply@github.com>
Sat, 16 Nov 2019 00:49:49 +0000 (09:49 +0900)
Upon mouse message generation, The states of Shift key and/or Ctrl key must be used. If Shift key is pressed, it enables MK_SHIFT flag of the mouse message. If Ctrl key is pressed, it enables MK_CONTROL flag of the mouse message. CORE-16279

win32ss/user/ntuser/mouse.c

index df8d7a6..6d41068 100644 (file)
@@ -227,6 +227,16 @@ UserSendMouseInput(MOUSEINPUT *pmi, BOOL bInjected)
         UserSetCursorPos(ptCursor.x, ptCursor.y, bInjected, pmi->dwExtraInfo, TRUE);
     }
 
+    if (IS_KEY_DOWN(gafAsyncKeyState, VK_SHIFT))
+        pCurInfo->ButtonsDown |= MK_SHIFT;
+    else
+        pCurInfo->ButtonsDown &= ~MK_SHIFT;
+
+    if (IS_KEY_DOWN(gafAsyncKeyState, VK_CONTROL))
+        pCurInfo->ButtonsDown |= MK_CONTROL;
+    else
+        pCurInfo->ButtonsDown &= ~MK_CONTROL;
+
     /* Left button */
     if (dwFlags & MOUSEEVENTF_LEFTDOWN)
     {