The engine inside PadForge
Pick a controller profile. Every gaming API sees the exact identity of real hardware, down to the bus type.
What it is
A C# SDK and a matching user-mode driver. Your code picks a profile, and the game on the other side sees the real thing.
See all 28 capabilitiesThe game sees the controller you chose, down to the bus.
Identity
A Bluetooth controller reports as Bluetooth, not as a USB device wearing its name. SDL3 matches it, Steam recognizes it, Chrome identifies it, joy.cpl shows the right name.
PadForge drives the whole surface. Other projects build on the parts they need.
PadForge uses HIDMaestro for virtual controller output. It is built on this SDK end to end and drives more of the surface than any other consumer: every profile family, live profile swapping, multi-controller slots, force feedback, controller audio and haptics, the Valve personas, and the virtual VR controllers. Its Softpedia listing is an Editor's Pick at 5.0 out of 5.
LizardByte's libvirtualhid, from the organization behind Sunshine, reuses this project's force-feedback descriptor byte for byte and says so in its own source: "HIDMaestro's MIT-licensed MinimumViablePidFfbBlock, byte-for-byte." Their header calls the layout the subset of the PID descriptor proven by HIDMaestro, and their alternatives table lists it beside ViGEmBus, inputtino and WinUHid.
See it running in PadForgeShared memory on one machine, measured in microseconds.
Latency
Real propagation over 10,000 single-press iterations, reproducible with one command. See the methodology.
One device, and every API Windows has sees it at once.
Every API
DirectInput sees correct axes and buttons. XInput sees separate triggers in one slot. The browser sees a STANDARD GAMEPAD. WGI sees one Gamepad. All at the same time.
Three calls
Reference one DLL, install the driver, create a controller. The game on the other side sees an Xbox 360 pad indistinguishable from the real thing.
using var ctx = new HMContext(); ctx.LoadDefaultProfiles(); ctx.InstallDriver(); using var ctrl = ctx.CreateController( ctx.GetProfile("xbox-360-wired")!); ctrl.SubmitState(new HMGamepadState { Buttons = HMButton.A });
Compare
Against the tools people usually reach for. Every row is a capability you can check yourself.
| Capability | HIDMaestro | VIIPER | ViGEmBus | vJoy |
|---|---|---|---|---|
| Kernel driver required | No, except the composite USB personas | Yes (USBIP) | Yes | Yes |
| Exact identity, incl. Bluetooth bus | Yes, 231 profiles | USB only | 2 fixed types | Fixed identity |
| Add a new device | JSON, or capture one you own | Write Go per device | N/A | N/A |
| Local single-press latency | ~35 µs measured | 168 µs published | N/A | N/A |
| Status | Active | Active | Retired | Stale |
Every capability HIDMaestro ships, grouped and stated plainly, including the complete comparison table and the questions people ask.
See it



A developer platform: a C# SDK and a matching user-mode driver. Clone the repo or grab a release. MIT licensed, free forever.
v1.9.0 adds ARM64 Windows. Each release has an x64 ZIP and an ARM64 ZIP, and HIDMaestro.Core.dll is the same file in both. Read what was measured on each.
There is no tip jar. Knowing HIDMaestro is useful is reward enough. If you insist on giving something, give it to a charity instead and bless humanity. Short of one you already trust, Humanitarian Services of The Church of Jesus Christ of Latter-day Saints puts it to work directly, and give.org grades charities against twenty standards if you would rather choose your own.
The upstream projects HIDMaestro is built on have earned it as much as anyone. They made all of this possible.
Anonymously, preferably. Not at all is fine too, and nothing here changes either way.
An invitation
“And we talk of Christ, we rejoice in Christ, we preach of Christ, we prophesy of Christ, and we write according to our prophecies, that our children may know to what source they may look for a remission of their sins.”
2 Nephi 25:26
Glory, honor, and praise to the Lord Jesus Christ, the source of all truth and salvation, forever and ever.
You are warmly invited to visit ComeUntoChrist.org and learn more about Him and The Church of Jesus Christ of Latter-day Saints.