# 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](../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 of `RioJoy.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](../docs/PLAN.md) (Phase 6).