# HG changeset patch
# User sl
# Date 1419427876 -3600
# Node ID 5c7f34c627b917ff212cf642e08bfc44154963cb
# Parent  219e9a4184563e0d3e51b993dd7d15067ee32b31
Fixing repeat delay and speed computation.
diff -r 219e9a418456 -r 5c7f34c627b9 HidEvent.cs
--- a/HidEvent.cs	Wed Dec 24 11:17:45 2014 +0100
+++ b/HidEvent.cs	Wed Dec 24 14:31:16 2014 +0100
@@ -37,17 +37,24 @@
 
         private System.Timers.Timer Timer { get; set; }
 
+        //Compute repeat delay and speed based on system settings
+        //Those computations were taken from the Petzold here: ftp://ftp.charlespetzold.com/ProgWinForms/4%20Custom%20Controls/NumericScan/NumericScan/ClickmaticButton.cs
+        private int iRepeatDelay = 250 * (1 + SystemInformation.KeyboardDelay);
+        private int iRepeatSpeed = 405 - 12 * SystemInformation.KeyboardSpeed;
+
         /// 
         /// Tells whether this event has already been disposed of.
         /// 
         public bool IsStray { get { return Timer == null; } }
 
-
-
+        /// 
+        /// We typically dispose of events as soon as we get the corresponding key up signal.
+        /// 
         public void Dispose()
         {
             Timer.Enabled = false;
             Timer.Dispose();
+            //Mark this event as a stray
             Timer = null;
         }
 
@@ -199,7 +206,7 @@
 
             if (Usages[0]!=0)
             {
-                StartRepeatTimer(SystemInformation.KeyboardDelay*250+250);
+                StartRepeatTimer(iRepeatDelay);
             }
             
             IsValid = true;
@@ -249,7 +256,7 @@
                 return;
             }
             aHidEvent.IsRepeat = true;
-            StartRepeatTimer(1000/(SystemInformation.KeyboardSpeed+2.5));            
+            StartRepeatTimer(iRepeatSpeed);            
             OnHidEventRepeat(aHidEvent);
         }