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:
Timo Kreuzer 2007-11-14 23:28:18 +00:00
parent 417b927ad5
commit 349ba2667d

View file

@ -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;
}