Skip to content

Button and Axis Mappings

hifihedgehog edited this page Apr 18, 2026 · 33 revisions

Button and Axis Mappings

The Mappings tab defines which physical input controls which virtual output. Every button, axis, trigger, and D-pad direction can be mapped individually.

Button and axis mapping grid with source, value, and record columns


Mapping Grid

The grid is the core of this page. One row per virtual output, one column per action.

Column What it does
Output The virtual output this row controls (e.g., "A", "Left Stick X", "D-Pad Up"). This is what the game sees.
Source Dropdown listing every physical input on the selected device. Pick manually, or use Record to auto-detect.
Value Live readout of the mapped input, updated in real time so you can verify instantly.
Record Press a button or move an axis on your controller and PadForge fills in Source automatically.
Clear Removes the mapping for this row, resets the deadzone to 50% (default), and syncs the Source dropdown back to blank.
Options Inv (Invert) and Half (Half-axis) checkboxes for axis rows. See Modifiers.
Axis-to-Button Deadzone Slider (0–100%) controlling how far an axis must move before a discrete output activates. Only enabled for axis-to-button mappings. See Axis-to-Button Deadzone.

Tip: The Value column reflects deadzone, center offset, and max range settings in real time. What you see is what the game gets.

Rows are grouped by category: Buttons (face, shoulder, stick clicks, system), Left Stick / Right Stick (X and Y axes), Triggers (left and right), and D-Pad (four directions).


Source Dropdown

Each row's Source dropdown lists every physical input available on the selected device. The manual alternative to recording.

  • Recognized gamepads (Xbox, DualSense, DualShock 4, Switch Pro, etc.) show friendly names: "A", "B", "Left Stick X", "Right Trigger", etc.
  • Raw / unrecognized devices (generic joysticks, racing wheels, flight sticks, Force Raw Joystick Mode) show numbered names: "Button 0", "Axis 0", "POV 0 Up", etc.
  • All raw buttons are listed, including those beyond the standard gamepad set of 11. Devices like the DualShock 3 (via DsHidMini SDF) expose up to 17 raw buttons. Buttons 11–16 all appear in the dropdown for mapping.
  • Offline devices preserve their last known inputs. If a controller is disconnected, its dropdown still shows the full input list from the previous session, so you can edit mappings without the device plugged in.

Selecting an input assigns it immediately. Same result as recording. The blank entry at the top clears the mapping.

When to use the dropdown vs. recording

Dropdown Recording
You know the exact input you want (e.g., "Axis 3") You're setting up a new controller and want the fastest workflow
Recording detected the wrong input You want to press each button in turn
The input is hard to isolate physically (e.g., a specific D-pad direction)

Tip: If recording keeps picking up the wrong input (e.g., a stick when you meant a button), use the dropdown to select the exact source manually.


Recording a Mapping

Recording is the fastest way to assign a physical input to a virtual output:

  1. Click Record on the target row.
  2. The button changes to "Recording..." and the row pulses blue.
  3. Press the button or move the axis on your physical controller.
  4. PadForge detects the input, fills in Source, and stops recording automatically.

PadForge detects buttons (first press), axes (movement past a threshold), D-pad / POV directions, and mouse axes.

Tip: Move only the intended input. Wiggling a stick while pressing a button may capture the stick instead. Push sticks firmly and pull triggers far enough to cross the detection threshold.


Map All Wizard

Map All walks through every row sequentially. The fastest way to set up a controller from scratch.

  1. Click Map All (on the Controller tab or the Mappings tab toolbar).
  2. PadForge highlights the first row and begins recording.
  3. A blue prompt shows which output it expects (e.g., "Press A").
  4. Press the corresponding button or move the corresponding axis.
  5. PadForge captures the input and advances to the next row.
  6. Repeat until done, or click Stop (or press Escape) to stop early.

Rows that already have a source are included in the sequence. Pressing an input overwrites the existing mapping; skipping preserves it.

Tip: Start with Map All to assign everything in one pass, then fine-tune individual rows afterward.


Auto-Mapping

When PadForge detects a recognized gamepad (Xbox, DualSense, DualShock 4, Switch Pro, etc.), it creates a default mapping matching the standard layout. All sticks, triggers, buttons, and D-pad directions pre-assigned. Auto-mapping applies when a device is first assigned to a slot. You can modify or override any row afterward.

Unrecognized devices (generic joysticks, flight sticks, raw-mode devices) do not receive auto-mapping. Use Map All, recording, or the Source dropdown to set them up.


Modifiers

Two checkboxes appear in the Options column for axis mapping rows.

Inv (Invert)

Flips the axis direction. Pushing a stick up produces a "down" value, and vice versa. Use this when the controller reports an axis opposite to what the virtual output expects.

Half (Half-axis)

Treats the input as half-range (0 to max) instead of full-range (-max to +max). Use this when:

  • Mapping a trigger (0–100%) to a full stick axis (-100% to +100%).
  • Mapping a stick axis to a trigger where only positive deflection should register.

Descriptor prefixes

On raw / unrecognized devices, modifiers appear as prefixes in the Source column:

Prefix Meaning Example
I Inverted "IAxis 1"
H Half-axis "HAxis 0"
IH Both "IHAxis 2"

Recognized gamepads show friendly names instead. You will only see these prefixes on numbered raw descriptors.


Axis-to-Button Deadzone

When an analog axis is mapped to a discrete output (button, D-pad direction, keyboard key, MIDI note, or vJoy/DirectInput button), the Axis-to-Button Deadzone column controls how far the axis must travel before the output activates. This prevents small joystick movements from accidentally triggering button presses.

  • Each row has its own slider (0–100%) with an editable text field and a reset button.
  • The default is 50%. The axis must pass the halfway point to activate.
  • The column is only enabled when the source is an axis or slider and the target is a discrete output. Axis-to-axis mappings (sticks, triggers, mouse movement, MIDI CCs) are unaffected. Use the Stick Deadzones and Trigger Deadzones tabs for those.
  • Setting the deadzone to a higher value (e.g., 80%) requires a firmer push before the button activates. A lower value (e.g., 20%) makes it more sensitive.
  • Values persist per mapping row and are included in Copy, Paste, and Copy From operations.

Mapping a centered joystick axis to two buttons

Flight sticks, racing wheels, and other devices with a centered axis (resting at 50%) need a special setup when mapped to two opposing buttons (e.g., left and right):

Direction Source Inv Half Deadzone
Left Axis 0 Yes Yes 50%
Right Axis 0 No Yes 50%

Why this works:

  1. Half tells PadForge to use only one half of the axis range (center to edge) instead of the full swing.
  2. Inv on the left direction flips the active half. So "left of center" activates "Left" and "right of center" activates "Right."
  3. Deadzone at 50% means the axis must travel 50% of the half range (i.e., 25% of the full range) before the button activates. Providing a comfortable deadzone around the center rest position.

Without Half, a 50% deadzone would reference the full axis range, requiring 75% total travel to activate. Much less intuitive. With Half enabled, the deadzone percentage applies only within the active half, so the numbers behave as expected.

Tip: Start with 50% deadzone and adjust up or down depending on how much stick travel you want before the button triggers. A higher value gives a wider neutral zone around center; a lower value makes the button respond sooner.


Raw Descriptor Names

For unrecognized devices or Force Raw Joystick Mode, the Source column shows numbered descriptors instead of friendly names:

Descriptor Meaning
Button 0, Button 1, ... Physical button by zero-based index
Axis 0, Axis 1, ... Physical axis by zero-based index. Typical order: LX(0), LY(1), LT(2), RX(3), RY(4), RT(5), but varies by device
POV 0 Up, POV 0 Right, ... Direction on POV hat 0 (most controllers have only one)
Slider 0, Slider 1 Slider axes (flight sticks, throttles)
Mouse X, Mouse Y Mouse movement axes

The I and H modifier prefixes can appear before any of these.


Copy, Paste, and Copy From

The toolbar above the mapping grid provides bulk operations:

Button Action
Clear All Removes all mappings and resets all deadzones to default (50%) for the current device on this slot
Copy Copies the current mapping configuration to the clipboard
Paste Applies a copied configuration. Translates automatically if source and target controller types differ
Copy From Copies mappings from another slot. Translates automatically if types differ
Map All Starts the Map All wizard

Cross-type translation

Copy From and Paste translate mappings between controller types automatically:

Translation Example
Xbox to DualShock A → Cross, B → Circle, X → Square, Y → Triangle, LB → L1, RB → R1, etc.
DualShock to Xbox Cross → A, Circle → B, Square → X, Triangle → Y, etc.
To/from DirectInput Translated via the standardized gamepad mapping

Both buttons and axes are translated. Pasting to the same controller type applies mappings with no changes.

Tip: Copy From saves time with multiple controllers. Set up the first, then Copy From on the rest.


Custom DirectInput Mappings

When a slot uses DirectInput (vJoy) with the Custom preset, the mapping grid adjusts dynamically to match your configured layout:

Category Rows shown Axis pool
Sticks X and Y per stick (0–4 sticks) 2 axes per stick
Triggers One per trigger (0–8 triggers) 1 axis per trigger
Buttons One per button (0–128 buttons) .
POVs Four directions per POV hat (0–4 hats) .

Sticks and triggers share a pool of 8 axes. Example: 2 sticks (4 axes) + 2 triggers (2 axes) = 6 of 8 used. Changing the DirectInput configuration rebuilds the mapping grid automatically.


Troubleshooting

  • An axis moves the wrong direction. Enable Inv on that row.
  • A trigger mapped to a stick only reaches 50%. Enable Half to expand half-range input to full-range output.
  • Recording keeps capturing the wrong input. Use the Source dropdown to select the exact input manually.
  • Buttons or axes are missing / numbered wrong. Try Force Raw Joystick Mode on the Devices page to bypass gamepad remapping.
  • A joystick axis triggers a button with the slightest touch. Increase the Axis-to-Button Deadzone on that row.
  • A centered axis mapped to two buttons fires both at rest. Enable Half on both rows, Inv on one direction, and set deadzone to 50%. See Mapping a centered joystick axis to two buttons.

Related Pages

Clone this wiki locally