
joymapper is a small Windows tool that reads inputs from a specific gamepad or button box and sends keyboard events to Windows or the currently active application. The included GUI does all the work for you: press a button on your device, pick a mode and keys, save, start the mapper. Done. For purists, the whole thing can also be driven as a pure command-line tool.
Download: Grab the latest prebuilt Windows binaries from the GitHub releases page - no Python required.
Because I couldn't find one that does exactly what I want. joymapper supports seven different mapping modes - perfect for button boxes in sim racing where a single physical button should do more than one thing.

| Mode | What it does |
|---|---|
press_release |
Send one key on button-down and another on button-up |
toggle |
Cycle through a sequence of keys on each press |
press |
Send a key on each button-down |
hold |
Hold a key while the button is held |
short_long_press |
Send different keys for short vs. long press |
short_long_press_hold |
Like short_long_press, but the long key is held until button-up |
press_hold_release |
Key on press, another after threshold while held, another on release |
joymapper-gui.exe (keep both executables in the same folder)You can map several devices in one config: just press a button on another connected device.
scancode - keys are then sent as hardware scan codes, which most games accept.