mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 17:42:58 +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);
|
return; //(Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set LastInputTick */
|
/* Set LastInputTick */
|
||||||
IntLastInputTick(TRUE);
|
IntLastInputTick(TRUE);
|
||||||
|
|
||||||
/* Update modifier state */
|
/* Update modifier state */
|
||||||
fsModifiers = IntKeyboardGetModifiers(&KeyInput);
|
fsModifiers = IntKeyboardGetModifiers(&KeyInput);
|
||||||
|
@ -597,6 +597,22 @@ KeyboardThreadMain(PVOID StartContext)
|
||||||
if (KeyInput.Flags & KEY_BREAK)
|
if (KeyInput.Flags & KEY_BREAK)
|
||||||
{
|
{
|
||||||
ModifierState &= ~fsModifiers;
|
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
|
else
|
||||||
{
|
{
|
||||||
|
@ -612,7 +628,7 @@ KeyboardThreadMain(PVOID StartContext)
|
||||||
bLeftAlt = FALSE;
|
bLeftAlt = FALSE;
|
||||||
if(fsModifiers == MOD_ALT)
|
if(fsModifiers == MOD_ALT)
|
||||||
{
|
{
|
||||||
if(KeyInput.Flags & KEY_E1)
|
if(KeyInput.Flags & KEY_E0)
|
||||||
{
|
{
|
||||||
gQueueKeyStateTable[VK_RMENU] = 0x80;
|
gQueueKeyStateTable[VK_RMENU] = 0x80;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue