Release keyboard modifiers in KeybardThreadMain on KEY_BREAK. Fixes bug 2751. I think...
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Wed, 14 Nov 2007 23:28:18 +0000 (23:28 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Wed, 14 Nov 2007 23:28:18 +0000 (23:28 +0000)
See issue #2751 for more details.

svn path=/trunk/; revision=30449

reactos/subsystems/win32/win32k/ntuser/input.c

index cfec7fd..fca3b91 100644 (file)
@@ -586,8 +586,8 @@ KeyboardThreadMain(PVOID StartContext)
             return; //(Status);
          }
 
-                /* Set LastInputTick */
-                IntLastInputTick(TRUE);
+         /* Set LastInputTick */
+         IntLastInputTick(TRUE);
 
          /* Update modifier state */
          fsModifiers = IntKeyboardGetModifiers(&KeyInput);
@@ -597,6 +597,22 @@ KeyboardThreadMain(PVOID StartContext)
             if (KeyInput.Flags & KEY_BREAK)
             {
                ModifierState &= ~fsModifiers;
+               if(fsModifiers == MOD_ALT)
+               {
+                   if(KeyInput.Flags & KEY_E0)
+                   {
+                      gQueueKeyStateTable[VK_RMENU] = 0;
+                   }
+                   else
+                   {
+                      gQueueKeyStateTable[VK_LMENU] = 0;
+                   }
+                   if (gQueueKeyStateTable[VK_RMENU] == 0 &&
+                       gQueueKeyStateTable[VK_LMENU] == 0)
+                   {
+                      gQueueKeyStateTable[VK_MENU] = 0;
+                   }
+               }
             }
             else
             {
@@ -612,7 +628,7 @@ KeyboardThreadMain(PVOID StartContext)
                    bLeftAlt = FALSE;
                    if(fsModifiers == MOD_ALT)
                    {
-                      if(KeyInput.Flags & KEY_E1)
+                      if(KeyInput.Flags & KEY_E0)
                       {
                          gQueueKeyStateTable[VK_RMENU] = 0x80;
                       }