No kernel driver, no test-signing
Runs entirely in user mode via UMDF2, loaded by a locally trusted self-signed certificate. No test-signing mode, no purchased certificate, no reboot. It installs on a normal PC, not just a developer box, and a bug cannot blue-screen the machine.
Controller audio and haptics
Three composite USB personas present the pad's speaker, microphone, and voice-coil actuators, so Windows gets real audio endpoints and a game's authored haptic waveforms reach your code. The USB transport those need is embedded in the same DLL and deploys itself on first use.
No network in the path
Input travels through shared memory on the same machine. No socket, no USBIP stack, no kernel transport driver between your application and the device.
Exact hardware identity
Profile-driven VID/PID, product strings, HID descriptors, and bus type. A Bluetooth controller reports as Bluetooth, not as a USB device wearing its name.
228 device profiles
Embedded profiles across 32 vendors: Xbox 360, Xbox Series, DualSense, Thrustmaster, Logitech, flight sticks, racing wheels, and more.
Every gaming API
DirectInput, XInput, SDL3/HIDAPI, browser Gamepad, WGI/GameInput, and RawInput all see the same real controller at once.
Validated across the stack
A 46-scenario regression battery checks DirectInput, XInput, SDL3, the browser Gamepad API, and WGI on every change, passing on both a 16-core Windows 11 desktop and a low-power Intel Atom Windows 10 machine.
Devices are JSON, not hardcoded
Add a controller by writing a data-only JSON profile or capturing one you already own. No per-device source code, no recompile, no hardcoded device classes.
Hot-plug support
Create and remove controllers on the fly. About 200 ms for a single controller. No reboots, no leftover devices.
Multi-controller
No hard limit on simultaneous virtual controllers. Tested with 6 mixed types, correct ordering across every API.
MIT licensed
Free and open source. Use it in your own projects, commercial or otherwise, with no restrictions.