[GH-ISSUE #44] Roadmap: dynamic UHID virtual joypads → Switch Pro & Joy-Con support #13

Open
opened 2026-10-15 12:51:12 +00:00 by bsakaguchi · 0 comments
Owner

Originally created by @kmreisi on GitHub (Jun 28, 2026).
Original GitHub issue: https://github.com/games-on-whales/inputtino/issues/44

Goal

Add Nintendo Switch Pro (and Joy-Con) support to inputtino, the right way:

  • Backward compatible. The existing PS5Joypad / XboxOneJoypad /
    SwitchJoypad constructors and APIs are unchanged — Sunshine keeps compiling.
    New behavior is opt-in.
  • UHID and not. Rich, HID-accurate pads when /dev/uhid is available; the
    existing uinput pads as a fallback otherwise — chosen at runtime (dynamic
    UHID), not compile time.
  • Foundation first. The runtime virtual-joypad factory
    (Joypad::TYPE + Joypad::create(...)) is the proper preparation that makes
    adding new joypad types clean. Switch Pro and Joy-Con are the first new types
    added this way; future controller types slot in the same way.

PRs (review/merge in order)

Each PR builds on the previous one. They are split so each is small and focused:

  1. #42 — Fix flaky pen-tablet test assertions. Standalone test stabilization.
  2. #43 — MAC handling: Mac struct + pooled allocation (PS5). Foundational
    refactor of the existing PS5 MAC handling.
  3. #40 — Runtime uhid/uinput selection + self-describing udev. The dynamic-UHID
    joypad factory + udev self-description.
  4. #37 — UHID Nintendo Switch Pro controller. A new rich uhid pad on the factory, alongside the existing PS5 DualSense.
  5. #41 — Joy-Con (L/R) support. Individual Joy-Cons via the factory.

Why this order

The PRs can be merged one after another and inputtino stays healthy at every
step.
Each one builds, passes the inputtino test suite, and keeps the downstream
consumers (Sunshine and wolf) compiling — verified locally per branch. So
they can be reviewed and merged incrementally, and fixes/improvements can be made
on the individual PRs without blocking the rest. No big-bang merge required.

Originally created by @kmreisi on GitHub (Jun 28, 2026). Original GitHub issue: https://github.com/games-on-whales/inputtino/issues/44 ## Goal Add **Nintendo Switch Pro (and Joy-Con)** support to inputtino, the right way: - **Backward compatible.** The existing `PS5Joypad` / `XboxOneJoypad` / `SwitchJoypad` constructors and APIs are unchanged — Sunshine keeps compiling. New behavior is opt-in. - **UHID *and* not.** Rich, HID-accurate pads when `/dev/uhid` is available; the existing uinput pads as a fallback otherwise — chosen at **runtime** (dynamic UHID), not compile time. - **Foundation first.** The runtime **virtual-joypad factory** (`Joypad::TYPE` + `Joypad::create(...)`) is the proper preparation that makes adding *new* joypad types clean. Switch Pro and Joy-Con are the first new types added this way; future controller types slot in the same way. ## PRs (review/merge in order) Each PR builds on the previous one. They are split so each is small and focused: 1. **#42 — Fix flaky pen-tablet test assertions.** Standalone test stabilization. 2. **#43 — MAC handling: `Mac` struct + pooled allocation (PS5).** Foundational refactor of the existing PS5 MAC handling. 3. **#40 — Runtime uhid/uinput selection + self-describing udev.** The dynamic-UHID joypad factory + udev self-description. 4. **#37 — UHID Nintendo Switch Pro controller.** A new rich uhid pad on the factory, alongside the existing PS5 DualSense. 5. **#41 — Joy-Con (L/R) support.** Individual Joy-Cons via the factory. ## Why this order **The PRs can be merged one after another and inputtino stays healthy at every step.** Each one builds, passes the inputtino test suite, and keeps the downstream consumers (**Sunshine** and **wolf**) compiling — verified locally per branch. So they can be reviewed and merged incrementally, and fixes/improvements can be made on the individual PRs without blocking the rest. No big-bang merge required.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
games-on-whales/inputtino#13
No description provided.