Cygwin: console: Ignore dwControlKeyState in event comparison.

- dwControlKeyState also may be null'ed on WriteConsoleInputW().
  Therefore ignore it in event comparison as well as wVirtualKeyCode
  and wVirtualScanCode.
This commit is contained in:
Takashi Yano 2022-03-19 08:43:24 +09:00
parent 8d3271b7fa
commit 92519e3d0c
1 changed files with 3 additions and 3 deletions

View File

@ -187,13 +187,13 @@ inrec_eq (const INPUT_RECORD *a, const INPUT_RECORD *b, DWORD n)
for (DWORD i = 0; i < n; i++) for (DWORD i = 0; i < n; i++)
{ {
if (a[i].EventType == KEY_EVENT && b[i].EventType == KEY_EVENT) if (a[i].EventType == KEY_EVENT && b[i].EventType == KEY_EVENT)
{ /* wVirtualKeyCode and wVirtualScanCode of the readback { /* wVirtualKeyCode, wVirtualScanCode and dwControlKeyState
key event may be different from that of written event. */ of the readback key event may be different from that of
written event. Therefore they are ignored. */
const KEY_EVENT_RECORD *ak = &a[i].Event.KeyEvent; const KEY_EVENT_RECORD *ak = &a[i].Event.KeyEvent;
const KEY_EVENT_RECORD *bk = &b[i].Event.KeyEvent; const KEY_EVENT_RECORD *bk = &b[i].Event.KeyEvent;
if (ak->bKeyDown != bk->bKeyDown if (ak->bKeyDown != bk->bKeyDown
|| ak->uChar.UnicodeChar != bk->uChar.UnicodeChar || ak->uChar.UnicodeChar != bk->uChar.UnicodeChar
|| ak->dwControlKeyState != bk->dwControlKeyState
|| ak->wRepeatCount != bk->wRepeatCount) || ak->wRepeatCount != bk->wRepeatCount)
return false; return false;
} }