Author: rharabien Date: Wed Oct 5 14:13:00 2011 New Revision: 54007
URL: http://svn.reactos.org/svn/reactos?rev=54007&view=rev Log: [I8042PRT] - Do not treat all extended keys as power keys in HandlePowerKeys. Fixes WM_KEYDOWN not being send right after extended key has been pressed. See issue #3212 for more details.
Modified: trunk/reactos/drivers/input/i8042prt/keyboard.c
Modified: trunk/reactos/drivers/input/i8042prt/keyboard.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/input/i8042prt/keyb... ============================================================================== --- trunk/reactos/drivers/input/i8042prt/keyboard.c [iso-8859-1] (original) +++ trunk/reactos/drivers/input/i8042prt/keyboard.c [iso-8859-1] Wed Oct 5 14:13:00 2011 @@ -279,24 +279,24 @@ if (!(InputData->Flags & KEY_E0)) return FALSE;
- if (InputData->Flags & KEY_BREAK) + switch (InputData->MakeCode) + { + case KEYBOARD_POWER_CODE: + KeyPress = SYS_BUTTON_POWER; + break; + case KEYBOARD_SLEEP_CODE: + KeyPress = SYS_BUTTON_SLEEP; + break; + case KEYBOARD_WAKE_CODE: + KeyPress = SYS_BUTTON_WAKE; + break; + default: + return FALSE; + } + + if (InputData->Flags & KEY_BREAK) /* We already took care of the key press */ return TRUE; - - switch (InputData->MakeCode) - { - case KEYBOARD_POWER_CODE: - KeyPress = SYS_BUTTON_POWER; - break; - case KEYBOARD_SLEEP_CODE: - KeyPress = SYS_BUTTON_SLEEP; - break; - case KEYBOARD_WAKE_CODE: - KeyPress = SYS_BUTTON_WAKE; - break; - default: - return FALSE; - }
/* Our work can only be done at passive level, so use a workitem */ DeviceExtension->NewCaps |= KeyPress;