Modernization of the legacy vJoy-based RIO cockpit interface for Win10/11, removing the vJoy dependency in favor of a custom VHF/UMDF HID driver, rewritten in C#/.NET 8 as a background tray app with per-game profiles. - Reorganize: legacy C++ -> legacy/, cockpit art -> docs/reference/ - RioJoy.sln: src/RioJoy.Core (lib) + src/RioJoy.Tray (tray app), net8.0-windows x64 - driver/ placeholder for the RioGamepad WDK driver - docs/PLAN.md (7-phase plan; profiles + serial-yield model) - docs/PROTOCOL.md (RIO wire format + iRIO input-map reference) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
RioGamepad — virtual HID driver
The RioGamepad virtual HID device replaces the legacy vJoy dependency. It
is a KMDF driver built on the Windows Virtual HID Framework (VHF, vhf.sys)
that presents a single HID game controller to Windows matching the layout the
old app drove through vJoy:
| Report field | Count | Notes |
|---|---|---|
| Axes | 6 | X, Y, Z, Rx, Ry, Rz — 16-bit |
| Hat switch | 1 | 4-direction POV with null state |
| Buttons | 96 | 12 bytes of button bits |
The C# tray app feeds input reports to the driver through a custom
DeviceIoControl IOCTL on the driver's control device; the driver relays them
to Windows via VhfReadReportSubmit.
Status
Phase 0 placeholder. Implementation is Phase 1 in ../docs/PLAN.md.
Build prerequisites (Phase 1)
- Windows Driver Kit (WDK) for Windows 11 + matching Visual Studio + Windows SDK
- A separate WDK/MSBuild project lives here (
RioGamepad.vcxproj); it is not part ofRioJoy.sln(different toolchain).
Signing
For the cockpit cabinets, enable test signing (bcdedit /set testsigning on)
and install a self-signed test certificate — appropriate for hardware you own.
Redistribution would instead use Microsoft attestation signing via Partner
Center. See the deployment notes in ../docs/PLAN.md (Phase 6).