mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 17:05:46 +00:00
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. svn path=/trunk/; revision=30449
This commit is contained in:
parent
417b927ad5
commit
349ba2667d
1 changed files with 19 additions and 3 deletions
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue