Skip to content

Devices

hifihedgehog edited this page Mar 19, 2026 · 14 revisions

Devices

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

Devices page showing detected controllers with status and slot badges


Page Layout

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

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 = disconnected
Device name Hardware-reported name (e.g., "Xbox Wireless Controller"). Merged devices show "All Keyboards (Merged)" or "All Mice (Merged)".
Slot badges Assigned [[Controller Slots
Remove button X button, permanently deletes the device and its settings

Bottom row:

Element Description
Type 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 removes the device and all its settings (mappings, slot assignments, hiding preferences). The Controller Slots itself stays; it just becomes unassigned.

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


Device Detail Pane

Identity Information

Field Description
Device name Large heading
Product Product name from hardware
Type Device category
Capabilities Axis/button/POV counts and feature labels
GUID Instance GUID built from device path, VID/PID, and serial number. Marquee-scrolls if long.
Instance Path HID path used for HidHide blacklisting. Shown only for devices with a resolvable HID path (not merged keyboard/mouse). Marquee-scrolls 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 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 Controller Slots.

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

Assigning a device creates a default Button and Axis Mappings 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 Controller Slots is created if it does not exist
  2. A default Button and Axis Mappings is generated based on device type and output type (Xbox 360, DualShock 4, DirectInput (vJoy), etc.)
  3. For gamepads and joysticks, "Hide from games" is auto-enabled if HidHide is installed
  4. Slot badges update immediately

Unassigning a device from all slots clears both hiding options.


Multi-Slot Assignment

A single physical device can feed multiple Controller Slots at once. Use cases:

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

Toggle on multiple slot buttons in the detail pane. Each slot has its own independent Button and Axis Mappings, so the same physical input can translate differently per slot.

Slot badges show all assigned slot numbers at a glance.


Raw Input State

The bottom section of the detail pane shows live, unprocessed hardware data before any Button and Axis Mappings, Stick Dead Zones, or sensitivity curves. Updates at the engine's polling rate.

Axes

Each axis shows:

Element Description
Name Gamepad mode: LX, LY, LT, RX, RY, RT. Raw mode: Axis 0, Axis 1, etc.
Progress bar Horizontal bar, 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 Stick Dead Zones 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). Raw mode shows all physical buttons (e.g., 13 or 17 on some controllers).

Keyboard Devices

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

Mouse Devices

A visual mouse graphic replaces axes and buttons:

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

POV / D-Pad

Compass widgets 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 rotational velocity. Used by the DSU Motion Server for motion-enabled emulators.

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

Values show three decimal places. A stationary controller reads near 0.000.

Accelerometer

Appears for devices with an accelerometer. 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 Controller Slots, games may detect both devices, causing double input. PadForge provides two prevention methods, configurable per device.

Hide from Games (HidHide)

Uses HidHide to hide the physical device at the OS level. Games cannot see it. PadForge is whitelisted automatically.

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

Additional apps 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 Button and Axis Mappings to a virtual controller output. Unmapped inputs pass through normally.

Best for Keyboards and mice: suppress mapped keys only, typing and cursor 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 Hide from Games
Racing wheel or flight stick Hide from Games
Keyboard with a few keys mapped Consume Mapped Inputs
Mouse with side buttons mapped Consume Mapped Inputs
Hide a keyboard entirely Hide from Games (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 do not auto-enable any hiding. Accidental blocking makes the computer difficult to control.

Unassigning a device from all slots clears both hiding options.

Safety Warnings

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

  • HidHide on keyboard — the entire keyboard is hidden from all apps. On "All Keyboards (Merged)", every connected keyboard is affected.
  • HidHide on mouse — mouse control is lost in all apps outside PadForge. On "All Mice (Merged)", every connected mouse is affected.
  • Consume on keyboard — mapped keys stop working in other apps 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.


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) via 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 buttons and maps them to non-matching slots
Extra buttons missing Controllers with >11 buttons lose extras in gamepad mode
Works in joy.cpl but not PadForge SDL3 mapping is wrong
Third-party or niche gamepads Budget controllers, retro adapters, arcade sticks often have incorrect entries
DsHidMini SDF mode DualShock 3 via SDF needs 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 Button and Axis Mappings manually via the Record button
  • Raw input display updates immediately

When Not to Use

If the controller works correctly in gamepad mode, raw mode has 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 use raw indices.


Device Reconnection and GUID Persistence

PadForge identifies devices using deterministic GUIDs for reliable recognition across reboots, re-plugs, and 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. 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) card.
  • Profiles — 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 stay in the list with a gray dot:

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

Stick Calibration

Center Offset

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

  1. Go to the Sticks tab on the controller's configuration page (see Stick Dead Zones)
  2. Click Calibrate Center while the stick is at rest (do not touch it)
  3. PadForge samples hardware values for ~500ms 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 full output is still achievable within the stick's actual travel.


Troubleshooting

Device Does Not Appear

  • Click Refresh to re-scan
  • Verify the device appears in Device Manager or joy.cpl
  • For Bluetooth controllers, confirm pairing in Windows Bluetooth settings
  • PadForge filters out its own Controller Slots (ViGEm, vJoy) automatically
  • Some devices need 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 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 incorrect mapping
  • Compare PadForge's raw input display with joy.cpl
  • For unmapped joystick-type devices, click Submit Mapping to contribute a mapping

Double Input in Games

  • Enable Hide from Games 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 on a different USB port gets 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 keep 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 stick may be physically worn. Increase Stick Dead Zones size on the Sticks tab to compensate.

HidHide Toggle Grayed Out

  • HidHide is not installed. Install via Driver Management.
  • Restart PadForge after installing HidHide.

Related Pages

Clone this wiki locally