← TECHNICAL DOCUMENTATION
0x02 // PERFORMANCE

Input Latency Mastery

AUTH: CYTIFIC_ENGINEERING EST: 12 MIN READ

01 // Polling Rate vs. Scan Rate

There is a critical distinction between how often a keyboard *reports* data and how often it *scans* its own matrix.

  • Polling Rate: The frequency (in Hz) at which the PC asks the USB controller for updates.
  • Internal Scan Rate: The frequency at which the keyboard's MCU checks the physical switch states.

A keyboard can have an 8000Hz Polling Rate, but if its Internal Scan Rate is only 1000Hz, the effective accuracy is still limited to 1ms intervals. True high-performance boards synchronize these two frequencies.

SPECIFICATION INTERVAL JITTER TOLERANCE
125 Hz (Standard) 8.0 ms High (±4ms)
1000 Hz (Gaming) 1.0 ms Medium (±0.5ms)
8000 Hz (Hyper) 0.125 ms Ultra-Low (<0.1ms)

02 // Browser Input Pipeline Jitter

When testing in a browser, your input travel through several layers: Hardware → USB Buffer → OS Kernel → Browser Process → JavaScript Event Loop.

Each layer adds potential **Jitter**. The Cytific KB Tester bypasses standard throttling by utilizing pointerrawupdate and high-resolution performance.now() timestamps to isolate the physical reporting interval from the browser's paint cycle.

03 // The "Debounce Delay" Tax

Physical switches need time to stop vibrating (bouncing) before they are considered "pressed." Traditional debouncing algorithms add a static delay (e.g., 5ms or 10ms) to every press.

Advanced Optimization: Modern "Hall Effect" or optical switches don't suffer from mechanical bounce, allowing for 0ms Debounce. This can shave up to 15ms off your total reaction time in competitive environments.

04 // OS-Level Latency Tuning

The operating system itself can be a bottleneck. To achieve the cleanest results on our diagnostic graphs, consider these professional tweaks:

Disable Filter Keys

Windows accessibility features like 'Filter Keys' inject artificial delays into the input stream to ignore accidental repeats.

USB Power Management

Disable 'USB Selective Suspend' in your power plan to prevent the controller from entering low-power states between polls.

Process Affinity

For the most stable 8000Hz polling, isolate the browser process to a specific CPU core to minimize context switching jitter.