Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Finger Gap Tester

Measures the time gap between simultaneous button presses on a fighting game controller. Built for FGC players who want to understand their natural finger timing, detect stray inputs, and tune their NOBD sync window.

⬇️ Download (Windows)

Download the latest FingerGapTester.exe →

No Python, no install, no dev tools. Just download, double-click, plug in your stick, and start pressing buttons. It's a single self-contained .exe — nothing else needed.

The exe is unsigned, so Windows SmartScreen may show a "Windows protected your PC" warning the first time. Click More info → Run anyway.


Two versions included:

  • Windows GUI (.exe) — download above, just run it (no setup)
  • Rust GUI (source) — build the native desktop app yourself with cargo
  • Python CLI — lightweight terminal tool, runs anywhere with Python + pygame

Features

  • Pair detection — measures the gap (in ms) between two buttons pressed "at the same time"
  • Stray press detection — flags solo button presses that didn't pair with anything (potential unwanted jabs during wavedashing)
  • Bounce detection — catches switch bounce (re-press within 5ms of release)
  • Pre-fire analysis — identifies pairs where the first button was solo for 1+ USB frames before the second arrived
  • Off-time tracking — measures time between release and re-press for stray diagnosis
  • OBD / macro detection — warns when >50% of presses have 0ms gap
  • Recommended NOBD value — suggests a sync window based on your average finger gap

Python CLI

Requirements

  • Python 3.x
  • pygame (pip install pygame)
  • A USB gamepad/fightstick

Usage

pip install pygame
python test_finger_gap.py
  1. Plug in your stick
  2. Run the script
  3. Press two buttons at the same time, over and over (like LP+HP for a dash)
  4. The script shows gaps in real time and flags strays/bounces
  5. Press Ctrl+C to see full summary stats

Example Output

  #  1  Btn 0+3  gap:   3.2ms  (avg: 3.2ms  min: 3.2ms  max: 3.2ms)
  #  2  Btn 0+3  gap:   2.8ms  (avg: 3.0ms  min: 2.8ms  max: 3.2ms)
  >>> STRAY: Btn 3 solo for 52.1ms (no pair arrived)  [off-time: 89.3ms]
  #  3  Btn 0+3  gap:   4.1ms  (avg: 3.4ms  min: 2.8ms  max: 4.1ms)
  !! BOUNCE: Btn 0 re-pressed after 2.3ms off

Summary at the end includes finger gap stats, distribution histogram, pre-fire analysis, stray breakdown by button/reason, and off-time analysis.


Rust GUI

Requirements

  • Rust toolchain (install from rustup.rs)
  • A USB gamepad/fightstick

Build & Run

cd rust
cargo build --release
./target/release/finger-gap-tester    # or .exe on Windows

Tabs

Gap Tester — press two buttons simultaneously to measure your finger gap:

  • Live stats: pairs, average, median, fastest, slowest
  • Stray count + stray rate percentage
  • Bounce count, pre-fire count
  • Distribution histogram
  • Recommended NOBD value
  • Event log with color-coded strays (red) and bounces (orange)

Button Monitor — per-button diagnostics:

  • Active button indicators (light up when held)
  • Stats table: press count, hold duration, repress gap
  • Full event log with timing details

What is NOBD?

NOBD (No OBD) is a firmware-level sync window for GP2040-CE controllers. It groups near-simultaneous button presses so they arrive on the same USB frame — giving you reliable dashes, throw techs, and multi-button inputs without OBD macros.

This tester helps you find your natural finger gap so you can set the sync window to the right value.


License

MIT

About

Measure simultaneous button press gaps for fighting game controllers. Detects strays, bounces, and pre-fire.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages