-
Notifications
You must be signed in to change notification settings - Fork 6
Button and Axis Mappings
The Mappings tab is where you tell PadForge which physical input on your controller should control which virtual output. Every button, axis, trigger, and D-Pad direction can be mapped individually.

The mapping grid shows one row per virtual output. Each row has:
| Column | Description |
|---|---|
| Target | The virtual controller output (e.g., "A", "Left Stick X", "Right Trigger", "D-Pad Up") |
| Source | The physical input currently assigned (e.g., "Button 0", "Axis 1", "POV 0 Up"), or blank if unmapped |
| Record | Click to start recording -- then press a button or move an axis on your physical controller |
| Modifiers | "I" (Invert) and "H" (Half-axis) toggles for axis mappings |
| Clear | Remove the mapping from this row |
- Click the Record button on the row you want to map.
- The button changes to indicate recording mode.
- On your physical controller, press the button or move the axis you want to assign.
- PadForge auto-detects the input and fills in the source. Recording stops automatically.
PadForge detects:
- Buttons -- Any button press
- Axes -- Stick and trigger movements
- POV / D-Pad -- Directional pad inputs in all directions
Two modifier toggles appear on axis mapping rows:
- I (Invert) -- Flips the axis direction. Useful when a physical axis reports values in the opposite direction from what the game expects.
- H (Half-axis) -- Treats the axis as a half-range (0 to max) instead of full-range (-max to +max). Useful for mapping a trigger (which is half-axis) to a full stick axis, or vice versa.
The Map All button walks you through every mapping row one at a time:
- Click Map All.
- PadForge highlights the first unmapped row and starts recording.
- Press the corresponding button or move the corresponding axis on your controller.
- PadForge moves to the next row automatically.
- Repeat until all rows are mapped, or press Escape to stop early.
This is the fastest way to set up a controller from scratch.
When PadForge detects a recognized gamepad (such as an Xbox controller, DualSense, DualShock 4, or Switch Pro Controller), it can automatically create a default mapping that matches the standard gamepad layout:
- Axes: Left Stick X/Y, Left Trigger, Right Stick X/Y, Right Trigger
- Buttons: A, B, X, Y, LB, RB, Back, Start, LS, RS, Guide
Auto-mapping is applied when a device is first assigned to a slot and PadForge recognizes it as a standard gamepad. You can always modify or override any auto-mapped input afterward.
The toolbar above the mapping grid provides bulk operations:
| Button | Action |
|---|---|
| Clear | Remove all mappings for the current device on this slot |
| Copy | Copy the current mapping configuration to the clipboard |
| Paste | Apply a previously copied mapping configuration |
| Copy From | Opens a dialog to copy mappings from another virtual controller slot or another device |
These are useful when you have multiple controllers of the same type and want to reuse the same mapping layout.
When a slot is set to vJoy with the Custom preset, the mapping grid dynamically adjusts to match your configured layout:
- Sticks -- Rows for each stick's X and Y axes, based on ThumbstickCount (0-4 sticks)
- Triggers -- Rows for each trigger axis, based on TriggerCount (0-4 triggers)
- Buttons -- Rows for each button, based on ButtonCount (0-128 buttons)
- POVs -- Rows for each POV hat's four directions (Up, Right, Down, Left), based on PovCount (0-4 POVs)
If you change the vJoy configuration (add more buttons, remove a stick, etc.), the mapping grid rebuilds automatically to reflect the new layout.
Mappings are organized into categories for easy navigation:
- Buttons -- Face buttons, shoulder buttons, stick clicks, and system buttons
- Axes -- Thumbstick X/Y axes
- Triggers -- Left and right trigger axes
- D-Pad -- Directional pad (Up, Down, Left, Right)
- 3D and 2D Visualization -- Click-to-map from the controller model
- Stick Dead Zones -- Adjust response after mapping stick axes
- Trigger Dead Zones -- Adjust range after mapping triggers
- Devices -- Assign physical devices to slots before mapping