patch 8.2.0647: MS-Windows: repeat count for events was not used
Problem: MS-Windows: repeat count for events was not used.
Solution: Check the repeat count. (Nobuhiro Takasaki, closes #5989)
diff --git a/src/os_win32.c b/src/os_win32.c
index 6b32869..85efc52 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -307,6 +307,7 @@
int head;
int tail;
int i;
+ static INPUT_RECORD s_irPseudo;
if (nLength == -2)
return (s_dwMax > 0) ? TRUE : FALSE;
@@ -354,6 +355,19 @@
}
}
+ if (s_irCache[s_dwIndex].EventType == KEY_EVENT)
+ {
+ if (s_irCache[s_dwIndex].Event.KeyEvent.wRepeatCount > 1)
+ {
+ s_irPseudo = s_irCache[s_dwIndex];
+ s_irPseudo.Event.KeyEvent.wRepeatCount = 1;
+ s_irCache[s_dwIndex].Event.KeyEvent.wRepeatCount--;
+ *lpBuffer = s_irPseudo;
+ *lpEvents = 1;
+ return TRUE;
+ }
+ }
+
*lpBuffer = s_irCache[s_dwIndex];
if (!(nLength == -1 || nLength == -2) && ++s_dwIndex >= s_dwMax)
s_dwMax = 0;