Skip to content

hifihedgehog/PadForge

Repository files navigation

PadForge

Modern controller mapping utility for Windows. Maps any controller, keyboard, or mouse to virtual Xbox 360, DualShock 4, or custom DirectInput controllers that games see as real hardware.

Built with SDL3, Windows Raw Input, ViGEmBus, vJoy, Windows MIDI Services, HelixToolkit, .NET 10 WPF, and Fluent Design. Modern fork of x360ce.

Features

  • Any input to any virtual controller — Joysticks, gamepads, keyboards, and mice map to Xbox 360, DualShock 4, or fully custom DirectInput controllers with up to 8 axes (sticks and triggers combined), 128 buttons, and 4 POV hats
  • Up to 16 virtual controller slots — Mix and match Xbox 360, DualShock 4, and custom DirectInput across up to 16 simultaneous slots, each combining input from multiple physical devices
  • 3D and 2D controller visualization — Interactive 3D controller model with mouse and touch gestures (rotate, pinch-to-zoom, two-finger pan) and flat 2D schematic, both showing live button, stick, and trigger state in real time
  • Web browser virtual controller — Use any touchscreen device as a controller via a built-in web server. Serves Xbox 360 and DS4 layouts with real-time touch input over WebSocket, including dual analog sticks, 8-way D-pad, triggers, and rumble feedback
  • Interactive mapping — Record mappings by pressing buttons on your controller, or use "Map All" for quick setup. Auto-mapping for recognized gamepads. Force raw joystick mode for devices with incorrect SDL3 gamepad remapping
  • Dead zones and response curves — Per-axis dead zone, anti-dead zone, and linear response curve for sticks and triggers, with live preview, plus stick center offset calibration and max range
  • Force feedback — Rumble passthrough with per-motor strength, overall gain, and motor swap. Haptic fallback for devices without native rumble. DirectInput force feedback for custom controllers
  • MIDI virtual controller output — Map any input to virtual MIDI devices. Axes send Control Change messages, buttons send Note On/Off. Configurable MIDI channel (1–16), CC mapping, note mapping, and velocity. Requires Windows MIDI Services (PadForge can install it for you)
  • Macro system — Trigger combos that execute button presses, key presses, delays, system volume control, and axis manipulation. Supports up to 128 buttons for custom DirectInput controllers, with repeat modes and input device or output controller trigger sources
  • Per-app profile switching — Automatically switch controller configurations when specific applications gain focus
  • DSU/Cemuhook motion server — Broadcasts gyro and accelerometer data over UDP (port 26760) for emulators like Cemu and Dolphin
  • Input hiding — Automatically hide physical controllers from games via HidHide (driver-level, prevents double input) or consume only mapped keyboard/mouse inputs via low-level hooks (no driver needed). Per-device toggles with auto-enable for gamepads and safety warnings for mice/keyboards
  • Driver management — One-click install/uninstall for ViGEmBus, HidHide, and vJoy. Built-in HidHide device blacklisting and app whitelisting — no external configuration tool needed
  • Flight-sim-grade input precision — 1000 Hz polling with sub-millisecond jitter, bit-perfect axis passthrough at default settings, double-precision dead zone math, and 16-bit (65536-position) vJoy axis output that exceeds the resolution of physical controller ADCs
  • System tray — Minimize to tray, start minimized, start at login
  • Portable — Single-file self-contained executable

Screenshots

Dashboard

Dashboard At-a-glance overview showing input engine status (polling rate, device count), virtual controller slots with type badges, DSU motion server, and driver status.

3D Controller Visualization

Controller Interactive 3D controller model rendered with HelixToolkit. Rotate, zoom, and pan to inspect from any angle. Buttons, sticks, and triggers highlight in real time. Includes motor activity meters and a "Map All" button for quick auto-mapping. Toggle between 3D and 2D views.

Button and Axis Mappings

Mappings Full mapping grid where each output (buttons, sticks, triggers, D-pad) can be assigned to any source input. Record a mapping by pressing a button on your device, or edit the descriptor directly. Supports inversion and half-axis options. Output labels adapt to controller type (DS4 shown: Cross, Circle, Square, Triangle, L1, R1, etc.).

Stick Dead Zones

Sticks Per-axis dead zone, anti-dead zone, and linear response curve sliders for left and right thumbsticks, with live circular previews showing current stick position and the active dead zone region.

Trigger Dead Zones

Triggers Range sliders, anti-dead zone, and live value bars for left and right triggers showing real-time processed output.

Force Feedback / Rumble

Force Feedback Rumble configuration with overall gain, per-motor strength sliders, and a swap option. Test Rumble button for quick verification, plus live motor activity bars showing current rumble intensity.

Macro Editor

Macros Create macros triggered by button combinations from either the output controller or a physical input device. Each macro supports an action sequence of button presses, key presses, delays, system volume adjustments, and axis manipulation. Configurable fire mode (on press, on release, repeat) with type-aware button names for Xbox 360, DualShock 4, and custom DirectInput controllers (up to 128 buttons).

Device List

Devices Card-based device list showing all detected gamepads, joysticks, keyboards, and mice with status, type, VID/PID, and slot assignment. Per-device input hiding toggles: "Hide from games" (HidHide driver-level) and "Consume mapped inputs" (low-level hooks for keyboards/mice). Select a device to see its raw input state — axes as progress bars, buttons as indicator circles, POV as a compass, and gyro/accelerometer values.

Settings

Settings Appearance theme, input engine options (auto-start, background polling, configurable polling interval, master input hiding toggle), and window behavior (system tray, start minimized, start at login).

Settings — Drivers and Diagnostics

Settings — Drivers One-click ViGEmBus, HidHide, and vJoy driver management with version info, settings file controls (save, reload, reset, open folder), and diagnostics showing app version, .NET runtime, and SDL version.

About

About Application information, technology stack, and license details.

Web Controller

Web Controller - Landing Web Controller - Xbox 360

Built-in web server lets any touchscreen device act as a virtual controller. Choose Xbox 360 or DS4 layout, with responsive touch controls including dual virtual analog sticks, 8-way D-pad, and real-time visual feedback matching the desktop 2D controller view.

Requirements

Optional drivers (PadForge can install all of these for you):

  • ViGEmBus — Virtual Xbox 360 and DualShock 4 output
  • vJoy — Custom DirectInput joystick/gamepad output with configurable axes, buttons, POVs, and force feedback
  • HidHide — Hide physical controllers from games to prevent double input
  • Windows MIDI Services — Virtual MIDI device output for MIDI virtual controllers

Build

dotnet publish PadForge.App/PadForge.App.csproj -c Release

Output: PadForge.App/bin/Release/net10.0-windows10.0.26100.0/win-x64/publish/PadForge.exe

See BUILD.md for full project structure, architecture details, and developer reference.

Upstream Projects and Acknowledgments

PadForge stands on the shoulders of these projects. Please consider supporting them:

Project Role in PadForge License
x360ce Original codebase this project was forked from MIT
SDL3 Controller input — joystick, gamepad, and sensor enumeration and reading zlib
ViGEmBus Virtual Xbox 360 and DualShock 4 controller driver MIT
Nefarius.ViGEm.Client .NET client library for ViGEmBus MIT
vJoy Custom DirectInput joystick/gamepad driver with configurable HID descriptors and force feedback MIT
Handheld Companion 3D controller models (Xbox 360, DualShock 4 OBJ meshes) CC BY-NC-SA 4.0
Gamepad-Asset-Pack 2D controller schematic overlays (Xbox 360, DS4 PNG assets) MIT
HelixToolkit 3D viewport rendering for WPF MIT
ModernWpf Fluent Design theme for WPF MIT
CommunityToolkit.Mvvm MVVM data binding framework MIT
HidHide Device hiding driver to prevent double input MIT
Windows MIDI Services Virtual MIDI device SDK for MIDI controller output MIT

Donations

Just knowing you find PadForge useful is reward enough for me. If you truly insist on donating, please donate to your charity of choice and bless humanity. Also consider donating directly to the upstream projects listed above — they made all of this possible.

My promise: I will never make PadForge a paid, freemium, or Patreon early-access paywalled product. Free means free.

License

This project is licensed under CC BY-NC-SA 4.0 (Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International).

  • 3D controller models adapted from Handheld Companion (CC BY-NC-SA 4.0) — Copyright (c) CasperH2O, Lesueur Benjamin, trippyone
  • 2D controller assets from Gamepad-Asset-Pack (MIT) — by AL2009man
  • Original codebase forked from x360ce (MIT)
  • SDL3 is licensed under the zlib License
  • ViGEmBus and Nefarius.ViGEm.Client are licensed under the MIT License
  • vJoy is licensed under the MIT License
  • Windows MIDI Services is licensed under the MIT License
  • HidHide is licensed under the MIT License

See LICENSE for the full license text.

About

Modern controller mapping utility for Windows. Maps any controller, keyboard, or mouse to virtual Xbox 360, DualShock 4, or custom DirectInput controllers that games see as real hardware.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages