Skip to content

Devices

hifihedgehog edited this page Mar 19, 2026 · 34 revisions

Devices

The Devices page lists every physical input device PadForge has detected. Select a device to inspect its identity, view live raw input, assign it to virtual controller slots, or configure input hiding and raw mode.

Devices


Page Layout

Area Contents
Left panel Device card list — one card per detected device
Right panel Detail/inspection pane for the selected device: identity, slot assignment toggles, hiding options, live raw input
Page header Refresh button (forces re-scan), Online count, Total count (includes disconnected devices)

Device Card List

Each device appears as a rounded card, sorted alphabetically by name then by VID:PID.

Card Layout

Top row:

Element Description
Status dot Green = connected; Gray = previously seen, currently disconnected
Device name Hardware-reported name (e.g., "Xbox Wireless Controller"). Merged devices show "All Keyboards (Merged)" or "All Mice (Merged)".
Slot badges Numbered badges indicating assigned virtual controller slots, or a dim "Unassigned" label
Remove button X button — permanently deletes the device record and all its settings

Bottom row:

Element Description
Type Device category: Gamepad, Joystick, Wheel, Flight Stick, Mouse, Keyboard, etc.
VID:PID USB Vendor and Product ID in hex (e.g., "054C:0CE6" for DualSense)
Capabilities Axis, button, and POV hat counts, plus feature labels (Rumble, Gyro, Accel)

Selection

Click a card to select it. The selected card shows a vertical accent-colored bar on its left edge and populates the detail pane.

Removing a Device

The X button permanently removes the device and all associated settings (mappings, slot assignments, hiding preferences). The virtual controller slot itself remains — it simply becomes unassigned.

If the device is still physically connected, it reappears on the next scan as a fresh device with no prior settings.


Device Detail Pane

Identity Information

Field Description
Device name Large heading
Product Product name string from hardware
Type Device category
Capabilities Axis/button/POV counts and feature labels
GUID Deterministic instance GUID built from device path, VID/PID, and serial number. Marquee scrolling if long.
Instance Path HID path used for HidHide blacklisting. Shown only for devices with a resolvable HID path (not merged keyboard/mouse entries). Marquee scrolling if long.
VID:PID Vendor and Product ID in hex

Submit Mapping Button

Appears for joystick-class devices (flight sticks, wheels, non-gamepad controllers). Opens a pre-filled GitHub issue to contribute a community controller mapping. Hidden for gamepads, keyboards, and mice.


Assigning Devices to Slots

Toggle Buttons (Detail Pane)

The Virtual Controller Assignment section shows numbered toggle buttons — one per existing virtual controller slot.

  • Highlighted = assigned to that slot
  • Normal = not assigned
  • Multiple toggles can be active simultaneously (see Multi-Slot Assignment)

Assigning a device creates a default mapping if none exists and navigates to the controller configuration page.

Drag and Drop

Drag a device card from the left panel onto a sidebar slot card. This assigns the device, identical to clicking the toggle button.

What Happens on Assignment

  1. The slot's virtual controller is created automatically if it does not exist
  2. A default button/axis mapping is generated based on device type and output type (Xbox 360, DS4, vJoy, etc.)
  3. For gamepads and joysticks, "Hide from games" is auto-enabled if HidHide is installed
  4. Slot badges on the device card update immediately

Unassigning a device from all slots automatically clears both hiding options.


Multi-Slot Assignment

A single physical device can feed multiple virtual controller slots simultaneously. Use cases:

  • Dual output types — one controller feeding both Xbox 360 (for a game) and vJoy (for a flight sim overlay) at once
  • Split button subsets — left side mapped to one virtual controller, right side to another
  • Comparing configurations — test different dead zone, sensitivity, or macro setups without swapping devices
  • MIDI + gamepad — simultaneous game input and MIDI control signals

Toggle on multiple slot buttons in the detail pane. Each slot maintains its own independent mapping — the same physical input can be mapped differently per slot.

Slot badges show all assigned slot numbers at a glance. Badge numbers are sequential (1, 2, 3...) based on slot creation order.


Raw Input State

The bottom section of the detail pane shows live, unprocessed hardware data — before any mappings, dead zones, or sensitivity curves. Updates at the engine's polling rate.

Axes

Each axis displays:

Element Description
Name Gamepad mode: LX, LY, LT, RX, RY, RT. Raw mode: Axis 0, Axis 1, etc.
Progress bar Horizontal bar normalized to 0–1 range. Centered stick reads ~50%.
Raw value Exact integer (0–65535) in monospace font

What to watch for:

  • Center drift — axis does not rest at ~32768 when untouched. Use Calibrate Center on the Sticks tab.
  • Trigger baseline — some triggers rest at 0, others at 32768, depending on hardware and input mode.
  • Dead axes — axis never moves. The mapping database may have an error. Try Force Raw Joystick Mode.

Buttons

Small circles in a flowing wrap layout, labeled by index (0, 1, 2...).

State Appearance
Released Dim gray circle
Pressed Filled with system accent color

Gamepad mode shows 11 standard buttons (A, B, X, Y, LB, RB, Back, Start, LS, RS, Guide — indices 0–10). Raw mode shows all physical buttons (e.g., 13 or 17 on some controllers).

Keyboard Devices

A visual QWERTY keyboard layout replaces axes and buttons — main keyboard, navigation cluster, arrow keys, and numpad. Keys light up with the accent color in real time.

Mouse Devices

A visual mouse graphic replaces axes and buttons, showing:

  • Button presses highlighted on the mouse body
  • Motion direction indicated visually
  • Scroll wheel activity as scroll intensity

POV / D-Pad

Compass widgets — small circles with a directional indicator line, labeled "POV 0", "POV 1", etc.

State Appearance
Centered Background circle with center dot, no line
Direction pressed Accent-colored line from center toward pressed direction

Supports all 8 directions: N, NE, E, SE, S, SW, W, NW. Some specialty controllers report continuous angular values.

Gyroscope

Appears for devices with a gyro sensor (DualSense, DualShock 4, Switch Pro Controller, etc.). Shows real-time rotational velocity:

Axis Motion
X Pitch (forward/backward tilt)
Y Yaw (left/right rotation)
Z Roll (side-to-side tilt)

Values display with three decimal places. Stationary controller reads near 0.000.

Accelerometer

Appears for devices with an accelerometer sensor. Shows linear acceleration:

Axis Motion
X Left/right
Y Up/down (includes gravity — ~1.0 or -1.0 when stationary)
Z Forward/backward

Input Hiding

When a physical device is assigned to a virtual controller slot, games may detect both devices — causing double input. PadForge provides two prevention mechanisms, configurable per device.

Hide from Games (HidHide)

Uses the HidHide kernel-mode driver to hide the physical device at the OS level. Games cannot see it at all. PadForge is whitelisted automatically.

Best for Gamepads, joysticks, wheels, flight sticks
Requires HidHide driver installed. Grayed out otherwise. Install via Driver Management in Settings.
Scope Entire device hidden from all non-whitelisted applications
Takes effect Immediately. Persists across restarts.

Additional applications can be whitelisted in Settings to see hidden devices (e.g., streaming overlays, secondary remappers).

Consume Mapped Inputs (Hooks)

Suppresses only the specific keys or mouse buttons actively mapped to a virtual controller output. Unmapped inputs pass through normally.

Best for Keyboards and mice — suppress mapped keys only, typing and mouse movement unaffected
Requires Nothing — uses Windows low-level input hooks
Scope Only mapped keys/buttons suppressed
Visibility Shown only for keyboard and mouse devices

When to Use Which

Scenario Method
Xbox/PlayStation/Switch controller on a slot Hide from Games (HidHide)
Racing wheel or flight stick on a slot Hide from Games (HidHide)
Keyboard with a few keys mapped to gamepad buttons Consume Mapped Inputs
Mouse with side buttons mapped to gamepad buttons Consume Mapped Inputs
Hide a keyboard entirely from all apps Hide from Games (HidHide) — see safety warnings

Auto-Enable Defaults

Device Type Hide from Games Consume Mapped Inputs
Gamepad / Joystick / Wheel / Flight Stick Auto-enabled (if HidHide installed) Not shown
Keyboard Not enabled Not enabled
Mouse Not enabled Not enabled

Keyboards and mice intentionally do not auto-enable any hiding — accidental blocking makes the computer difficult to control.

Unassigning a device from all slots automatically clears both hiding options.

Safety Warnings

PadForge shows a confirmation flyout when hiding is manually enabled on a keyboard or mouse:

  • HidHide on keyboard — the entire keyboard is hidden from all applications. On "All Keyboards (Merged)", this affects every connected keyboard.
  • HidHide on mouse — mouse control is lost in all apps outside PadForge. On "All Mice (Merged)", this affects every connected mouse.
  • Consume on keyboard — mapped keys stop working in other applications while PadForge runs.
  • Consume on mouse — mapped buttons (potentially left/right click) are suppressed.

Click Cancel to revert or Proceed to confirm.

Master Switch

The global "Hide devices from games" toggle in Settings (under Input Engine) acts as a master on/off. When OFF, no hiding or suppression occurs regardless of per-device settings. Turning it back ON restores all per-device settings. A quick way to temporarily disable all hiding.


Force Raw Joystick Mode

By default, PadForge uses SDL3's gamepad remapping layer for recognized gamepads — translating raw button/axis indices into a standard layout (A/B/X/Y, LX/LY, LT/RT) based on a built-in controller database.

Force Raw Joystick Mode bypasses this remapping and reads raw hardware indices directly — the same values shown in Windows Game Controllers (joy.cpl).

When to Enable

Symptom Explanation
Buttons mapped to wrong outputs SDL3's mapping does not match the device
Some buttons produce no input SDL3 consumes physical buttons and maps them to slots that do not match
Extra buttons missing Controllers with more than 11 buttons lose extras in gamepad mode
Works in joy.cpl but not PadForge SDL3 mapping is the problem
Third-party or niche gamepads Budget controllers, retro adapters, arcade sticks more likely to have incorrect entries
DsHidMini SDF mode DualShock 3 via SDF requires raw mode — SDL3 drops some buttons

How to Enable

  1. Select the device card
  2. In the detail pane, find the Input Mode section (gamepad-type devices only)
  3. Check Force raw joystick mode
  4. Saved immediately, persists across restarts

What Changes

  • Axis names: LX, LY, LT... become Axis 0, Axis 1, Axis 2... (matching joy.cpl)
  • Button names: A, B, X, Y... become Button 0, Button 1, Button 2...
  • Button count may increase — raw mode exposes all physical buttons
  • Auto-mapping is unavailable — record each mapping manually via the Record button
  • Raw input display updates immediately

When Not to Use

If the controller works correctly in gamepad mode, raw mode offers no benefit. Gamepad mode provides friendly names and automatic default mappings.

The toggle only appears for devices SDL3 recognizes as gamepads. Devices already operating as raw joysticks (flight sticks, wheels, generic HID) always read raw indices.


Device Reconnection and GUID Persistence

PadForge identifies devices using deterministic GUIDs for reliable recognition across reboots, re-plugs, and USB port changes.

GUID Generation Priority

Priority Source Stability
1 Serial number (e.g., Bluetooth MAC address) Stable across reboots, re-pairing, and port changes
2 Device path Stable for the same USB port; changes if port changes
3 SDL instance ID + VID/PID May change on every reconnection

Practical Implications

  • Bluetooth controllers (DualSense, DualShock 4, Switch Pro) — GUID stays the same across reboots and re-pairs. All settings persist automatically.
  • Wired USB controllers — GUID stays the same for the same USB port. Different port generates a new GUID; old settings remain on the offline (gray) device card.
  • Profile switching — uses a ProductGuid fallback. If a profile was saved with a device that now has a different InstanceGuid (e.g., port change), PadForge matches by VID/PID so the profile still applies.

Offline Device Cards

Disconnected devices remain in the list with a gray dot:

  • All mappings, slot assignments, and settings are preserved
  • Reconnecting with the same GUID restores everything automatically
  • Remove with the X button if no longer needed
  • Offline cards consume no resources — stored settings only

Stick Calibration

Center Offset

Compensates for natural center drift — a stick resting slightly off-center when untouched.

  1. Go to the Sticks tab on the controller's configuration page
  2. Click Calibrate Center while the stick is at rest (do not touch it)
  3. PadForge samples hardware values for approximately half a second and calculates the offset

The offset is applied before dead zone processing, keeping the dead zone circle centered on the actual rest position.

Max Range

Controls the maximum physical travel (0–100%) that maps to full output. If the stick cannot physically reach the corners, reducing max range ensures 100% output is still achievable within the stick's actual travel.


Troubleshooting

Device Does Not Appear

  • Click Refresh to force a re-scan
  • Verify the device appears in Windows Device Manager or joy.cpl
  • For Bluetooth controllers, confirm pairing in Windows Bluetooth settings
  • PadForge filters out its own virtual controllers (ViGEm, vJoy) automatically
  • Some devices require manufacturer-specific drivers

Device Appears but Shows No Input

  • Check the raw input state section — are axes, buttons, and POVs displayed?
  • If they appear but never change, try enabling Force Raw Joystick Mode
  • For Bluetooth devices, verify a stable connection (green status dot)

Buttons Missing or Mapped Wrong

  • Enable Force Raw Joystick Mode to bypass SDL3's potentially incorrect mapping
  • Compare PadForge's raw input display with joy.cpl
  • For unmapped joystick-type devices, click Submit Mapping to contribute a community mapping

Double Input in Games

  • Enable Hide from Games (HidHide) on the device, or Consume Mapped Inputs for keyboard/mouse
  • Verify the master "Hide devices from games" toggle in Settings is ON
  • Confirm HidHide is installed via Driver Management

Device Lost Settings After Reconnecting

  • Wired controller plugged into a different USB port may have received a new GUID. Old settings remain on the offline (gray) card. Plug back into the original port, or reconfigure on the new card.
  • Bluetooth controllers retain their GUID via MAC address — settings persist automatically.

Center Drift Even After Calibration

  • Ensure the stick was completely at rest during calibration
  • For severe drift, the analog stick may be physically worn. Increasing dead zone size on the Sticks tab can compensate.

HidHide Toggle Grayed Out

  • HidHide driver is not installed. Go to Settings > Driver Management to install it.
  • Restart PadForge after installing HidHide.

Related Pages

Clone this wiki locally