Build on Joystick Diagrams
Joystick Diagrams is extensible through two plugin types: parser plugins that add support for new games by reading their config files, and output plugins that deliver exported diagrams to other applications. Both use a Python API with Pydantic-powered settings that auto-generate UI controls. Parser plugins can additionally declare input routes to merge virtual-device bindings back onto the physical hardware that fed them.
Plugins are not part of the application. Each one lives in its own repository, ships its own releases, and is installed by users from the store built into the app. That means you can publish a fix the day a game patches, without waiting for a Joystick Diagrams release.
Publishing to the Store
The store reads its catalogue from plugins_manifest.json, hosted on this site. Getting listed means adding an entry to that file, which you can do by opening a pull request on the site repository or asking on Discord.
An entry needs:
- A stable
id(UUID) that never changes across versions. This is how the app tracks installs and updates. name,type(parseroroutput),version,description, andauthor.-
A
download_urlpointing at a release asset (a GitHub release zip works well) and itssha256. The app verifies the checksum before unpacking. min_app_versionif your plugin needs a specific Joystick Diagrams release, otherwisenull.signed: whether the archive carries a validplugin.sig. Unsigned plugins are still listed; users approve them through the trust dialog on first run.
To publish an update, bump version, download_url and sha256
on your existing entry. Keep the id as it is, and the app will offer the update to
everyone who has it installed.
Development Setup
Get your local environment running. Python, uv, and building from source.
Parser Plugins
Add support for new games. Read config files and return structured binding data.
Input Library
Profiles, devices and inputs. The shared data model that plugins produce and consume.
Input Routing
Route bindings from virtual devices back to the physical hardware that fed them. Powers vJoy → joystick merging.
Output Plugins
Deliver diagrams anywhere. Post-export hooks that receive files and binding data.