Initial release of 8BitDo Control Center

Provide a Linux desktop controller configuration app with evdev input, uinput remapping, profiles, calibration, and reconnect recovery.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-21 12:18:10 -07:00
commit 6507f5f8b3
121 changed files with 15415 additions and 0 deletions

31
docs/ROADMAP.md Normal file
View File

@@ -0,0 +1,31 @@
# Development Roadmap
## Completed foundations
- Tauri + React/TypeScript desktop shell, themes, navigation, and accessibility
contrast mode.
- Versioned JSON profiles with built-in templates and import/export.
- Generic, non-copyrighted controller visualization.
- Real evdev controller enumeration/capability probing plus a safe simulated
fallback for development without hardware.
- Pure, tested stick/trigger response transformation math.
## Next engineering milestones
1. Connect the reader to the transform pipeline and a managed uinput virtual
controller with safe cleanup on disconnect/shutdown.
2. Finish advanced mappings (macros, turbo timing, shift layers, hold/toggle
semantics) in the output pipeline.
3. Complete calibration sampling and custom curve editing.
4. Add executable-based profile switching and the support-bundle exporter.
5. Validate hardware behavior across USB, Bluetooth, and receiver modes; build
distributable Linux packages.
## Safety principles
- No firmware changes.
- No undocumented vendor commands.
- No root application process.
- Never create a virtual output device unless requested and permission checks
pass.
- Release virtual controls on disconnect and application shutdown.

46
docs/TROUBLESHOOTING.md Normal file
View File

@@ -0,0 +1,46 @@
# Troubleshooting
## The controller is not listed
1. Confirm the controller is powered on and in an active input mode. An
8BitDo device shown by `lsusb` as **8BitDo IDLE** is not yet an evdev
controller and cannot produce input events.
2. Connect it over USB or pair it through a supported receiver/Bluetooth mode.
3. Check kernel discovery with `ls -l /dev/input/event*` and `evtest`.
4. Reopen the app or switch Simulation Mode off in Settings.
The app only reads Linux evdev capability metadata. It does not send
undocumented commands or update controller firmware.
## Permission denied for input or virtual controller
Install the local udev rule:
```bash
bash scripts/setup-linux.sh
```
Then log out and back in so your new `8bitdo` group membership takes effect.
Settings → Diagnostics reports whether `/dev/uinput` is writable.
## Duplicate or missing game input
Do not enable live remapping until the virtual controller pipeline is active
and the physical input device is safely grabbed. Until then, keep remapping
disabled to retain direct physical-controller input.
## No battery or firmware details
Those details are optional Linux input properties and may not be exposed by
every controller mode. This application never queries undocumented 8BitDo
protocols to obtain them.
## App will not build
Install development dependencies:
```bash
bash scripts/dev-deps.sh
npm install
npm run tauri dev
```