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/nt…
==============================================================================
--- 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;
}