cygwin: generate Alt-Numpad characters independent of NumLock state

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2017-08-01 14:10:50 +02:00
parent 8c4f86dd8e
commit 60546ae529
1 changed files with 7 additions and 1 deletions

View File

@ -20,8 +20,14 @@ details. */
static inline bool
is_alt_numpad_key (PINPUT_RECORD pirec)
{
/* Remove lock key state from ControlKeyState. Do not remove enhanced key
state since it helps to distinguish between cursor (EK) and numpad keys
(non-EK). */
DWORD ctrl_state = pirec->Event.KeyEvent.dwControlKeyState
& ~(CAPSLOCK_ON | NUMLOCK_ON | SCROLLLOCK_ON);
return pirec->Event.KeyEvent.uChar.UnicodeChar == 0
&& pirec->Event.KeyEvent.dwControlKeyState == LEFT_ALT_PRESSED
&& ctrl_state == LEFT_ALT_PRESSED
&& pirec->Event.KeyEvent.wVirtualScanCode >= DIK_NUMPAD7
&& pirec->Event.KeyEvent.wVirtualScanCode <= DIK_NUMPAD0
&& pirec->Event.KeyEvent.wVirtualScanCode != DIK_SUBTRACT;