Skip to content

t3chnicallyinclined/finger-gap-tester

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

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.

Two versions included:

  • Python CLI — lightweight terminal tool, runs anywhere with Python + pygame
  • Rust GUI — native desktop app with real-time stats, histograms, and button monitoring

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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors