This page tracks known compatibility work that is larger than a small report packing fix. Keep entries here until the repo has a validated implementation path and consumer tests or manual validation prove the behavior.
Status: proposed.
Manual capture files are useful while debugging controller compatibility, but hand-curated JSON is not a durable source-control artifact. Future captures should be generated by the same tool that users run, with a documented schema and predictable redaction behavior.
Proposed solution:
- Add a capture/export mode to
virtualhid_controlthat can enumerate connected HID/gamepad devices, let the user select one, and save a JSON capture file. - Make the capture schema useful for any controller type, not only the profiles currently implemented by libvirtualhid.
- Record stable evidence by default: VID/PID, release number, manufacturer, product, transport, HID descriptor/report metadata, supported feature/output report IDs, public PnP compatible IDs, and consumer observations when the tool can collect them.
- Redact machine-unique values by default, including instance IDs, serial-like values, Bluetooth addresses, container IDs, local file paths, and driver INF names. Add an explicit unsafe/debug option only if raw local evidence is needed.
- Keep JSON support scoped to the tool target. If this is implemented in C++,
prefer
nlohmann/json, but do not expose that dependency through the public libvirtualhid API. - Treat generated capture files as local debugging artifacts by default. Only commit a generated capture later if it is reproducible, sanitized, and used by tests or documentation in a way that justifies keeping it.
Status: native output-path validation and the remaining Steam and Chromium consumer gaps are tracked in GitHub issue #80.