@@ -1769,17 +1769,16 @@ BOOL co_IntProcessKeyboardMessage(MSG* Msg, BOOL* RemoveMessages)
1769
1769
USER_REFERENCE_ENTRY Ref ;
1770
1770
PWND pWnd ;
1771
1771
UINT ImmRet ;
1772
- BOOL Ret = TRUE;
1772
+ BOOL Ret = TRUE, bKeyUpDown = FALSE ;
1773
1773
PTHREADINFO pti = PsGetCurrentThreadWin32Thread ();
1774
+ const UINT uMsg = Msg -> message ;
1774
1775
1775
- if (Msg -> message == VK_PACKET )
1776
- {
1777
- pti -> wchInjected = HIWORD (Msg -> wParam );
1778
- }
1776
+ if (uMsg == VK_PACKET )
1777
+ pti -> wchInjected = HIWORD (Msg -> wParam );
1779
1778
1780
- if (Msg -> message == WM_KEYDOWN || Msg -> message == WM_SYSKEYDOWN ||
1781
- Msg -> message == WM_KEYUP || Msg -> message == WM_SYSKEYUP )
1779
+ if (uMsg == WM_KEYDOWN || uMsg == WM_SYSKEYDOWN || uMsg == WM_KEYUP || uMsg == WM_SYSKEYUP )
1782
1780
{
1781
+ bKeyUpDown = TRUE;
1783
1782
switch (Msg -> wParam )
1784
1783
{
1785
1784
case VK_LSHIFT : case VK_RSHIFT :
@@ -1797,7 +1796,7 @@ BOOL co_IntProcessKeyboardMessage(MSG* Msg, BOOL* RemoveMessages)
1797
1796
pWnd = ValidateHwndNoErr (Msg -> hwnd );
1798
1797
if (pWnd ) UserRefObjectCo (pWnd , & Ref );
1799
1798
1800
- Event .message = Msg -> message ;
1799
+ Event .message = uMsg ;
1801
1800
Event .hwnd = Msg -> hwnd ;
1802
1801
Event .time = Msg -> time ;
1803
1802
Event .paramL = (Msg -> wParam & 0xFF ) | (HIWORD (Msg -> lParam ) << 8 );
@@ -1807,7 +1806,7 @@ BOOL co_IntProcessKeyboardMessage(MSG* Msg, BOOL* RemoveMessages)
1807
1806
1808
1807
if (* RemoveMessages )
1809
1808
{
1810
- if ((Msg -> message == WM_KEYDOWN ) &&
1809
+ if ((uMsg == WM_KEYDOWN ) &&
1811
1810
(Msg -> hwnd != IntGetDesktopWindow ()))
1812
1811
{
1813
1812
/* Handle F1 key by sending out WM_HELP message */
@@ -1822,7 +1821,7 @@ BOOL co_IntProcessKeyboardMessage(MSG* Msg, BOOL* RemoveMessages)
1822
1821
co_IntSendMessage (Msg -> hwnd , WM_APPCOMMAND , (WPARAM )Msg -> hwnd , MAKELPARAM (0 , (FAPPCOMMAND_KEY | (Msg -> wParam - VK_BROWSER_BACK + 1 ))));
1823
1822
}
1824
1823
}
1825
- else if (Msg -> message == WM_KEYUP )
1824
+ else if (uMsg == WM_KEYUP )
1826
1825
{
1827
1826
/* Handle VK_APPS key by posting a WM_CONTEXTMENU message */
1828
1827
if (Msg -> wParam == VK_APPS && pti -> MessageQueue -> MenuOwner == NULL )
@@ -1831,7 +1830,7 @@ BOOL co_IntProcessKeyboardMessage(MSG* Msg, BOOL* RemoveMessages)
1831
1830
}
1832
1831
1833
1832
//// Key Down!
1834
- if ( * RemoveMessages && Msg -> message == WM_SYSKEYDOWN )
1833
+ if (* RemoveMessages && uMsg == WM_SYSKEYDOWN )
1835
1834
{
1836
1835
if ( HIWORD (Msg -> lParam ) & KF_ALTDOWN )
1837
1836
{
@@ -1869,9 +1868,10 @@ BOOL co_IntProcessKeyboardMessage(MSG* Msg, BOOL* RemoveMessages)
1869
1868
Ret = FALSE;
1870
1869
}
1871
1870
1872
- if ( pWnd && Ret && * RemoveMessages && Msg -> message == WM_KEYDOWN && !(pti -> TIF_flags & TIF_DISABLEIME ))
1871
+ if (pWnd && Ret && * RemoveMessages && bKeyUpDown && !(pti -> TIF_flags & TIF_DISABLEIME ))
1873
1872
{
1874
- if ( (ImmRet = IntImmProcessKey (pti -> MessageQueue , pWnd , Msg -> message , Msg -> wParam , Msg -> lParam )) )
1873
+ ImmRet = IntImmProcessKey (pti -> MessageQueue , pWnd , uMsg , Msg -> wParam , Msg -> lParam );
1874
+ if (ImmRet )
1875
1875
{
1876
1876
if ( ImmRet & (IPHK_HOTKEY |IPHK_SKIPTHISKEY ) )
1877
1877
{
0 commit comments