-
Notifications
You must be signed in to change notification settings - Fork 6
Devices
The Devices page shows every physical input device PadForge has detected. From here you can see device details, view raw input state in real time, and assign devices to virtual controller slots.

The left side of the page shows a card for each detected device. Each card displays:
| Element | Description |
|---|---|
| Status dot | Green = connected and online, gray = previously seen but currently disconnected |
| Device name | The name reported by the device (e.g., "Xbox Wireless Controller", "DualSense Wireless Controller") |
| VID/PID | Vendor ID and Product ID for identification |
| Type | Device type (Gamepad, Joystick, Keyboard, Mouse, etc.) |
| Capabilities | Icons or labels showing what the device supports (rumble, motion sensors, etc.) |
| Slot badges | Small numbered badges showing which virtual controller slots this device is assigned to |
Click a device card to select it. The selected card is highlighted with an accent bar on its left edge. Selecting a device shows its raw input state on the right side of the page.
When a device is selected, the top of the right panel shows identifying information for the device:
| Field | Description |
|---|---|
| GUID | The device instance GUID. Uses a ticker marquee animation to scroll the text if it overflows the available width. |
| Instance Path | The HidHide device instance path. Only shown when available (devices that support HidHide). Also uses ticker marquee scrolling for long paths. |
Both fields use a marquee-style scrolling animation so the full value is always readable even when the panel is narrow.
When a device is selected, the right panel shows its real-time input state. This is the unprocessed data coming directly from the hardware, before any mappings or dead zones are applied.
Each axis is shown as a progress bar with its current value (normalized 0 to 1). Common axes include:
- Left Stick X / Y
- Right Stick X / Y
- Left Trigger / Right Trigger
- Additional axes for specialty controllers
Buttons are displayed as a grid of circles in a wrap panel. When a button is pressed, its circle fills with the accent color. Each button is labeled with its index number.
POV hats are shown as a compass widget. A directional indicator rotates to show the current POV direction (N, NE, E, SE, S, SW, W, NW). When the POV is centered (no direction pressed), the indicator disappears.
For devices with motion sensors (like DualSense, DualShock 4, or Switch Pro Controller), a grid shows real-time gyro and accelerometer values for all three axes (X, Y, Z).
When a keyboard device is selected, the raw input display shows a visual keyboard layout with keys that light up in real time as they are pressed.
When a physical device is assigned to a virtual controller slot, games may see both the physical and virtual controller — causing double input. PadForge provides two mechanisms to prevent this, configurable per device from the detail panel.
Uses the HidHide driver to completely hide the physical device from all non-whitelisted applications. PadForge automatically whitelists itself so it can still read the device.
- Best for: Gamepads, joysticks, wheels, flight sticks
- Requires: HidHide driver installed (toggle is grayed out otherwise with a tooltip explaining why)
- Scope: Entire device is hidden from games — all inputs are invisible, not just mapped ones
Intercepts and suppresses only the specific keys or mouse buttons that are actively mapped. Unmapped inputs pass through to other applications normally.
- Best for: Keyboards and mice (only shown for these device types)
- Requires: Nothing — no driver needed
- Scope: Only mapped keys/buttons are suppressed; everything else works normally
When you assign a device to a slot, PadForge automatically enables the appropriate hiding mechanism:
| Device Type | "Hide from games" | "Consume mapped inputs" |
|---|---|---|
| Gamepad / Joystick / Wheel / Flight Stick | Auto-ON (if HidHide installed) | N/A (not shown) |
| Keyboard | OFF | Auto-ON |
| Mouse | OFF | Auto-ON |
When a device is removed from all slots, both toggles are automatically cleared.
A global "Hide devices from games" toggle in Settings (under Input Engine) acts as a master switch. When OFF, no hiding or input suppression occurs regardless of per-device toggles. When turned back ON, all per-device settings resume.
Some gamepads have incorrect SDL3 gamepad remapping — buttons map to wrong outputs, some inputs are swallowed, and rumble may not work. This typically happens when SDL3's built-in controller database has a wrong mapping for a device's HID report layout (for example, DualShock 3 with DsHidMini).
When Force Raw Joystick Mode is enabled for a device, PadForge bypasses SDL3's gamepad remapping layer and reads the raw joystick axis and button indices directly — the same raw values you see in Windows Game Controllers (joy.cpl). This means auto-mapping is not available (you must record each mapping manually), but all inputs will be read correctly.
- Buttons map to wrong outputs or some buttons produce no input
- A device works correctly in joy.cpl but not in PadForge
- SDL3 recognizes your device as a "gamepad" but the mapping is wrong
The Input Mode section appears in the device detail panel for gamepad-type devices. Toggle Force raw joystick mode to bypass SDL3's gamepad remapping. This setting is saved per-device.
Note: The Input Mode section is only shown for devices that SDL3 recognizes as gamepads. Devices already operating in raw joystick mode (flight sticks, wheels, etc.) do not show this toggle since they are already reading raw indices.
There are two ways to assign a physical device to a virtual controller slot:
Each device card shows toggle buttons for available virtual controller slots. Click a slot's toggle button to assign or unassign that device from the slot. A device can be assigned to multiple slots at the same time.
You can also drag a device card from the Devices page and drop it onto a controller slot in the sidebar. This assigns the device to that slot.
A single physical device can be mapped to multiple virtual controller slots simultaneously. This is useful for scenarios like:
- Using one controller to drive both an Xbox 360 and a vJoy virtual controller at the same time
- Mapping different button subsets from the same device to different virtual outputs
- Testing multiple configurations without switching devices
PadForge uses SDL3 to enumerate and read all connected input devices. Devices are detected automatically when connected. If a device is unplugged, its card remains in the list (shown as offline/gray) so your mappings and assignments are preserved when you reconnect it.
Some controllers have natural center drift — the stick rests slightly off-center even when not being touched. PadForge provides per-stick calibration to compensate:
The center offset setting adjusts the stick's resting position so that the dead zone is centered on the actual hardware center rather than the theoretical center. To calibrate:
- Go to the Sticks tab on a controller's configuration page
- Click Calibrate Center while the stick is at rest (not touching it)
- PadForge samples the hardware values for ~0.5 seconds and calculates the offset
The center offset is applied before dead zone processing, so your dead zone circle stays centered on the actual rest position.
The Max Range setting (0-100%) for each axis controls the maximum physical travel that maps to full output. If your stick cannot physically reach the corners (common with some controllers), reducing max range ensures you can still reach 100% output without having to push the stick beyond its physical limit.
- Check raw input first if a mapping is not working as expected. The raw state view shows exactly what PadForge is receiving from the device.
- Use slot badges on device cards to quickly see which devices are assigned where.
- Reconnecting a device restores its previous slot assignments and mappings automatically.
- Specialty controllers (flight sticks, racing wheels, etc.) may show more axes than a standard gamepad.
- Controller Slots -- Create slots before assigning devices
- Button and Axis Mappings -- Map the device's inputs after assigning it
- Dashboard -- See connected device counts at a glance
- Driver Management -- HidHide driver installation for device hiding
- Troubleshooting -- Help if devices are not detected
- Web Controller -- Use any touchscreen device as a virtual controller via the browser