[PATCH] Cygwin: console: Ignore dwControlKeyState in event comparison.

Takashi Yano takashi.yano@nifty.ne.jp
Fri Mar 18 23:49:12 GMT 2022


- dwControlKeyState also may be null'ed on WriteConsoleInputW().
  Therefore ignore it in event comparison as well as wVirtualKeyCode
  and wVirtualScanCode.
---
 winsup/cygwin/fhandler_console.cc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/winsup/cygwin/fhandler_console.cc b/winsup/cygwin/fhandler_console.cc
index 68248d16c..fd5f972d8 100644
--- a/winsup/cygwin/fhandler_console.cc
+++ b/winsup/cygwin/fhandler_console.cc
@@ -187,13 +187,13 @@ inrec_eq (const INPUT_RECORD *a, const INPUT_RECORD *b, DWORD n)
   for (DWORD i = 0; i < n; i++)
     {
       if (a[i].EventType == KEY_EVENT && b[i].EventType == KEY_EVENT)
-	{ /* wVirtualKeyCode and wVirtualScanCode of the readback
-	     key event may be different from that of written event. */
+	{ /* wVirtualKeyCode, wVirtualScanCode and dwControlKeyState
+	     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 *bk = &b[i].Event.KeyEvent;
 	  if (ak->bKeyDown != bk->bKeyDown
 	      || ak->uChar.UnicodeChar != bk->uChar.UnicodeChar
-	      || ak->dwControlKeyState != bk->dwControlKeyState
 	      || ak->wRepeatCount != bk->wRepeatCount)
 	    return false;
 	}
-- 
2.35.1



More information about the Cygwin-patches mailing list