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/ntu... ============================================================================== --- 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; }