MouseLatencyTester 1.0.0
First public release.
Microsecond-accurate mouse click latency measurement with a Teensy 2.0 probe, plus a desktop dashboard for running, archiving and comparing benchmarks.
Install
Download LatencyTester-1.0.0-Setup.exe below and run it.
It installs the dashboard, the firmware sketches and the full documentation into a single folder, so you can flash the Teensy without cloning the repository. Per-user install by default, so no admin rights are needed. Your measurement archive lives in Documents\LatencyTester\ and is never removed by the uninstaller.
The installer is not code-signed, so Windows SmartScreen will warn on first run. Verify against SHA256SUMS.txt:
187BD03B7C52F1A7AF9F367FFC6F7562B3C4CE99B6ECA573E8354B17E7616636
From 1.0.0 onward the app can update itself: Settings → Check for updates downloads the next release, verifies it against the published SHA-256, and installs it in one click.
No hardware? Try it anyway
Settings → Demo mode → Start demo device. A simulated Teensy that speaks the real serial protocol drives the whole interface, the charts and the archive. Runs recorded that way are flagged [DEMO] and never mixed with real measurements.
What's in it
- Live test — mean, median, min, max, std dev, P5/P95/P99, IQR, MAD and jitter (P95−P5), with a live chart. Outliers are marked, never removed: the raw sample stays in the database and in every statistic.
- Compare — several runs at once as raw samples, box plot, ECDF or histogram, with a selectable baseline and Δ median / Δ mean / Δ P95 / Δ P99 in ms and percent. Charts export to PNG, SVG or PDF.
- Sessions — searchable archive. Rename, edit metadata, duplicate as a template for the next configuration, export to CSV.
- Devices — profiles per mouse: manufacturer, model, serial, switch type, usual firmware.
- Test mode — full screen, colour-coded: 🟩 press · 🟥 wait · 🟦 done. The OLED is frozen while it runs so the display cannot disturb the timing.
- 8 languages — English, Italiano, Deutsch, Español, Français, 日本語, Русский, 中文.
- Light / dark / system themes. Both preferences persist.
- One-click update, checksum-verified.
217 tests, 87% coverage of the non-GUI code, CI on Windows and Linux.
Firmware
Flash firmware/latency_tester_oled_ldr_v1_4 (included in the install folder). It adds the BTN1/BTN2 test events on pads B0/B1 — polled, never on an interrupt, non-blocking 30 ms debounce, events queued so nothing is written to the serial port between t₀ and t₁. The measurement path is byte-identical to the verified v1.3 baseline.
Older sketches (v1.0–v1.3) are kept and still work; the dashboard treats unknown lines as log output.
Known limitation, documented on purpose
The calibration echo is sent as two bytes where the firmware reads one, which desynchronises the ping loop and collapses the calibration offset towards its +250 µs constant. Every archived measurement was taken with this behaviour, so it has not been changed — fixing it would shift every latency value and break comparability with existing runs. Full explanation in docs/serial_protocol.md.
Not implemented
Button behaviour is not bound yet — v1.4 only reports presses, pending the hardware acceptance test. The 2N2222A transistor and its 220 Ω resistor are physically present but deliberately unconnected: no firmware, no protocol, no invented wiring. There is no photoresistor-based measurement mode; the KY-018 provides the LIGHT telemetry value and nothing else.
Full Changelog: https://github.com/PrimeBuild-pc/MouseLatencyTester/commits/v1.0.0