[ros-diffs] [tkreuzer] 30449: Release keyboard modifiers in KeybardThreadMain on KEY_BREAK. Fixes bug 2751. I think the whole handling of modifiers is still pretty hackish and could need some improvement. See issue #2751 for more details.

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Thu Nov 15 00:28:18 CET 2007


Author: tkreuzer
Date: Thu Nov 15 02:28:18 2007
New Revision: 30449

URL: http://svn.reactos.org/svn/reactos?rev=30449&view=rev
Log:
Release keyboard modifiers in KeybardThreadMain on KEY_BREAK. Fixes bug 2751. I think the whole handling of modifiers is still pretty hackish and could need some improvement.
See issue #2751 for more details.

Modified:
    trunk/reactos/subsystems/win32/win32k/ntuser/input.c

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/input.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/input.c?rev=30449&r1=30448&r2=30449&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/input.c (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/input.c Thu Nov 15 02:28:18 2007
@@ -586,8 +586,8 @@
             return; //(Status);
          }
 
-		 /* Set LastInputTick */
-		 IntLastInputTick(TRUE);
+         /* Set LastInputTick */
+         IntLastInputTick(TRUE);
 
          /* Update modifier state */
          fsModifiers = IntKeyboardGetModifiers(&KeyInput);
@@ -597,6 +597,22 @@
             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 @@
                    bLeftAlt = FALSE;
                    if(fsModifiers == MOD_ALT)
                    {
-                      if(KeyInput.Flags & KEY_E1)
+                      if(KeyInput.Flags & KEY_E0)
                       {
                          gQueueKeyStateTable[VK_RMENU] = 0x80;
                       }




More information about the Ros-diffs mailing list