@@ -65,6 +65,12 @@ ShellHookProc(INT code, WPARAM wParam, LPARAM lParam)
6565 return CallNextHookEx (hShellHook , code , wParam , lParam );
6666}
6767
68+ static inline BOOL
69+ CheckVirtualKey (UINT vKey , UINT vKey1 , UINT vKey2 )
70+ {
71+ return vKey == vKey1 || vKey == vKey2 ;
72+ }
73+
6874static LRESULT CALLBACK
6975KeyboardLLHook (INT code , WPARAM wParam , LPARAM lParam )
7076{
@@ -80,10 +86,11 @@ KeyboardLLHook(INT code, WPARAM wParam, LPARAM lParam)
8086 BOOL bAltPressed = GetAsyncKeyState (VK_MENU ) < 0 ;
8187 BOOL bCtrlPressed = GetAsyncKeyState (VK_CONTROL ) < 0 ;
8288 // Detect Alt+Shift and Ctrl+Shift
83- if ((pKbStruct -> vkCode == VK_SHIFT && bAltPressed ) ||
84- (pKbStruct -> vkCode == VK_MENU && bShiftPressed ) ||
85- (pKbStruct -> vkCode == VK_SHIFT && bCtrlPressed ) ||
86- (pKbStruct -> vkCode == VK_CONTROL && bShiftPressed ))
89+ UINT vkCode = pKbStruct -> vkCode ;
90+ if ((bAltPressed && CheckVirtualKey (vkCode , VK_LSHIFT , VK_RSHIFT )) ||
91+ (bShiftPressed && CheckVirtualKey (vkCode , VK_LMENU , VK_RMENU )) ||
92+ (bCtrlPressed && CheckVirtualKey (vkCode , VK_LSHIFT , VK_RSHIFT )) ||
93+ (bShiftPressed && CheckVirtualKey (vkCode , VK_LCONTROL , VK_RCONTROL )))
8794 {
8895 PostMessageToMainWnd (WM_LANG_CHANGED , 0 , 0 );
8996 }
0 commit comments