Skip to content
hifihedgehog edited this page Mar 19, 2026 · 36 revisions

Macros

Macros let you trigger sequences of actions with controller inputs. Press a button combo, deflect a stick, or use a D-pad direction, and PadForge can output button presses, key presses, mouse actions, delays, volume changes, and axis values automatically. Macros are configured per virtual controller slot on the Macros tab.

Macros


Creating a Macro

  1. Navigate to a virtual controller slot and switch to the Macros tab.
  2. Click Add to create a new macro.
  3. Give it a descriptive name (e.g., "Volume Knob", "Turbo Fire", "Mouse Aim").
  4. Set up the trigger -- the input combination that activates the macro.
  5. Add actions -- what happens when the macro fires.
  6. Configure fire mode, repeat, and other options as needed.

Each macro has an enable checkbox. Disabled macros are preserved in your settings but do not fire. This lets you keep macros ready without deleting them.


Trigger Setup

The trigger defines which controller inputs activate the macro. A trigger can include buttons, axes (sticks/triggers), and D-pad (POV) directions -- all of which must be active at the same time for the macro to fire.

Trigger Sources

Before recording, choose where to capture the trigger from:

Source Description When to Use
Output Controller Records from the virtual controller's mapped output. Button names match standard gamepad labels (A, B, X, Y, LB, etc.). Best for most setups. The trigger works regardless of which physical device is connected, because it reads the already-mapped output.
Input Device Records raw inputs directly from your physical controller. Use this when you need to trigger on device-specific buttons that have no standard mapping -- for example, the DualSense touchpad click, a DualShock 3 pressure-sensitive button, or extra buttons on a flight stick.

Recording a Trigger

  1. Click Record Trigger.
  2. Press and hold the button(s) on your controller that should form the trigger combo.
  3. Deflect a stick or pull a trigger past the threshold to add an axis trigger -- the axis name appears in the live display.
  4. Press a D-pad / POV hat direction to add it as a directional trigger.
  5. Click Stop when all desired inputs are shown.
  6. The trigger combination is saved.

Trigger Components Explained

You can mix and match these three components in a single trigger. All active components must be satisfied simultaneously.

Button triggers are the most common. Recording while holding LB + A creates a two-button combo trigger -- both must be pressed for the macro to activate.

Axis triggers activate when a stick or trigger is pushed past a threshold. For example, recording while pulling the left trigger past halfway adds "Left Trigger > 50%" to the trigger. You can further refine axis triggers with a direction filter:

  • Any (default) -- fires regardless of which way the axis is deflected.
  • Positive -- fires only when the axis is pushed in the positive direction (stick right, stick up, or trigger pressed).
  • Negative -- fires only when the axis is pushed in the negative direction (stick left or stick down).

This is useful for creating separate macros for left-stick-left vs. left-stick-right, each with different actions.

POV / D-pad triggers activate when the hat switch is pushed to a specific direction. The trigger checks a 45-degree sector around the recorded direction, so pressing "Up" also catches slight diagonal inputs near up.

Combined example: A trigger of "LB + Right Stick X (Positive) + D-pad Up" requires all three to be active -- LB held, right stick pushed right past the threshold, and D-pad pressed up.

Axis Trigger Threshold

When your trigger includes an axis, a threshold slider appears (1% to 100%, default 50%). The axis must be deflected past this percentage for the trigger to count as active.

  • A low threshold (e.g., 10%) makes the trigger very sensitive -- a slight stick movement activates it.
  • A high threshold (e.g., 90%) requires nearly full deflection before the macro fires.
  • For triggers using a direction filter (Positive or Negative), the threshold applies within that half of the axis range.

Fire Modes (Trigger Modes)

The fire mode controls when and how often the macro fires relative to the trigger:

Mode When the Macro Fires Best For
On Press Once, the moment the trigger combo is fully activated Toggle actions, one-shot commands, sending a single keystroke
On Release Once, when you let go of the trigger combo after activating it Actions that should happen after you release (e.g., releasing a charged shot)
While Held Continuously, every frame for as long as the trigger combo is held Turbo fire, continuous mouse movement while holding a button, real-time volume control
Always Continuously, whenever the virtual controller is active -- no trigger needed Stick-to-mouse mapping, ambient volume knobs, any macro that should always be running

Choosing the Right Fire Mode

  • Use On Press when you want something to happen exactly once per button press. Example: pressing Guide + A to send a keyboard shortcut like Alt+Tab.
  • Use On Release when the action should trigger after a deliberate hold-and-release. Example: releasing LB to send a chat message that was being composed.
  • Use While Held when you need continuous or repeating behavior while a button is held. Example: holding RB for turbo fire (with repeat mode), or holding a bumper to control volume with a stick.
  • Use Always when no trigger button is needed at all. Example: mapping the right stick to mouse cursor movement at all times, or mapping a trigger to system volume as a permanent knob. Always mode hides the trigger recording controls entirely.

Actions

Actions are the steps the macro performs when it fires. They execute in order from top to bottom.

Action Types in Detail

Button Press / Button Release

Presses or releases a virtual controller button. For Button Press, you set a duration (in milliseconds) that the button is held before automatically releasing.

  • The button list matches your output type: Xbox 360 names (A, B, X, Y, LB, RB, Back, Start, LS, RS, Guide, D-pad), DualShock 4 names (Cross, Circle, Square, Triangle, L1, R1, Share, Options, L3, R3, PS, Touchpad), or numbered buttons for DirectInput Custom presets.
  • You can select multiple buttons to press/release simultaneously.
  • Example: Press A for 50ms to simulate a quick button tap in a game.

Key Press / Key Release

Sends a keyboard key press or release to Windows. The key is delivered via the same mechanism as a real keyboard, so games and applications see it as a genuine keystroke.

  • Key combos are supported: you can build multi-key sequences like Ctrl+Alt+Delete or Ctrl+C. Each key in the combo is pressed in order and released in reverse order.
  • Select keys from the dropdown or type the combo string directly.
  • Key Press has a duration setting -- the key is held for that many milliseconds before being released.
  • Example: Key Press Escape for 50ms to open a game's pause menu from your controller.

Delay

Pauses the action sequence for a specified number of milliseconds before continuing to the next action. Does not press or release anything -- it simply waits.

  • Example: A 100ms delay between a button press and a button release gives a game time to register the input.

Axis Set

Sets a virtual controller axis to a specific numeric value. This directly overrides the axis output.

  • Available axes: Left Stick X, Left Stick Y, Right Stick X, Right Stick Y, Left Trigger, Right Trigger.
  • Stick axes accept values from -32768 to 32767 (center = 0). Trigger axes accept 0 to 65535 (0 = released, 65535 = fully pressed).
  • Example: Set Left Stick Y to 32767 to simulate full forward stick input when a button is pressed -- useful for auto-run macros.

System Volume

Maps a controller axis to the Windows master volume (0% to 100%). The volume updates every frame based on the current axis position, giving you a smooth, analog volume knob.

  • Choose which axis drives the volume (e.g., Left Trigger, Right Stick Y).
  • Invert axis reverses the direction (release trigger = louder, press trigger = quieter).
  • Show volume OSD (enabled by default) displays the Windows volume flyout overlay so you can see the current level on screen. Disable this if you find the popup distracting.
  • Volume Limit caps the maximum volume the macro can reach (see below).
  • Example: Map Left Trigger to System Volume. Squeeze the trigger to raise volume from 0% to 100%. Release to go silent.

App Volume

Controls a specific application's volume in the Windows audio mixer, independently of other apps and the master volume.

  • Enter the process name (e.g., "spotify", "firefox", "Discord"). An auto-suggest dropdown lists all applications currently producing audio.
  • All other options work the same as System Volume: axis source, invert, volume limit.
  • Example: Map Right Trigger to Spotify's volume. You can lower game audio via System Volume on the left trigger while keeping music at a comfortable level on the right trigger.

Mouse Move

Maps a controller axis to continuous mouse cursor movement. The cursor moves every frame based on how far the axis is deflected.

  • Choose the axis: stick axes produce bidirectional movement (left/right or up/down), trigger axes produce unidirectional movement.
  • Sensitivity (1 to 100) controls how many pixels the cursor moves per frame at full stick deflection. Higher values = faster cursor. Start around 10--15 and adjust to taste.
  • For stick axes, PadForge automatically maps X axes to horizontal movement and Y axes to vertical movement.
  • Uses sub-pixel accumulation for smooth, precise movement even at low sensitivity values.
  • Example: Two Mouse Move actions -- Right Stick X (sensitivity 15) and Right Stick Y (sensitivity 15) -- give you full cursor control from the right stick.

Mouse Button Press / Mouse Button Release

Presses or releases a mouse button. Mouse Button Press has a duration setting and automatically releases after the specified time.

Available buttons:

  • Left -- standard click
  • Right -- right-click / context menu
  • Middle -- middle-click / scroll wheel click
  • X1 (Back) -- browser/app back button
  • X2 (Forward) -- browser/app forward button

Example: Map controller's RB to Mouse Button Press Left for 50ms to get a left-click from your gamepad.

Mouse Scroll

Maps a controller axis to continuous mouse scroll wheel movement. Works like Mouse Move but controls the scroll wheel instead of the cursor.

  • Sensitivity controls scroll speed (units per frame at full deflection).
  • Useful with stick Y axes for smooth scrolling, or with triggers for one-direction scrolling.
  • Example: Map Right Stick Y to Mouse Scroll with sensitivity 5 for smooth document scrolling from your controller.

Volume Limit

Both System Volume and App Volume actions support a Volume Limit slider (1% to 100%). This caps the maximum volume the macro can set, no matter how far the source axis is pushed.

Why use it: If you use a trigger as a volume knob, full trigger pull normally sets volume to 100% -- which can be painfully loud. Setting a Volume Limit of 30% means full trigger pull only reaches 30%.

The limit is shown in the macro action list as "(max N%)".

Axis Source -- Output Controller vs. Input Device

Continuous actions that read from a controller axis (System Volume, App Volume, Mouse Move, Mouse Scroll) let you choose where the axis value comes from:

Source Description
Output Controller (default) Reads the axis from the virtual controller's combined, mapped output. This is the same value the game sees.
Input Device Reads the axis directly from a specific physical controller's raw input. When selected, you pick the device and axis index from dropdowns.

When to use Output Controller: This is the right choice for most setups. The axis values reflect your mappings (deadzone, range, inversion), and the macro works regardless of which physical device you plug in.

When to use Input Device: Choose this when:

  • The axis you want is not mapped to the virtual controller (e.g., you want to use a flight stick's throttle lever for volume, but it is not mapped to any gamepad axis).
  • You have multiple physical devices and want to dedicate one specific device's axis to the action.
  • You want the raw, unprocessed axis value without any mapping transformations.

When Input Device is selected, you pick the physical device from a dropdown and then select the axis index (Axis 0, Axis 1, etc.) from that device.

Axis Options

Two optional controls appear on volume and mouse actions:

  • Invert axis -- Reverses the axis direction. For volume, this means releasing the trigger raises volume. For mouse movement, this reverses the cursor direction.
  • Show volume OSD -- Toggles the Windows volume flyout popup (enabled by default, only on System Volume). The OSD updates at approximately 5 Hz to avoid spamming the overlay.

Both settings persist across restarts.

Building an Action Sequence

  1. Click Add Action to add a step.
  2. Choose the action type from the dropdown.
  3. Configure the action (select which button, which key, how long to delay, etc.).
  4. Add more actions as needed. The sequence executes top to bottom.
  5. Click the delete button to remove an action.

Example -- Quick melee combo:

  1. Button Press: Y (50ms)
  2. Delay: 100ms
  3. Button Press: B (50ms)

Example -- Stick-to-mouse aiming (Always mode):

  1. Mouse Move: Right Stick X, sensitivity 15
  2. Mouse Move: Right Stick Y, sensitivity 15

Repeat Modes

Repeat modes control how many times the action sequence runs each time the macro fires.

Mode Behavior Use Case
Once The action sequence runs one time, then stops. One-shot commands, toggle actions, single key presses
Fixed Count The sequence repeats a set number of times (e.g., 3 presses). Tapping a button exactly N times for a specific in-game combo
Until Release The sequence repeats continuously until you release the trigger. Requires While Held fire mode. Turbo fire, rapid button mashing, continuous looping actions

When using Fixed Count or Until Release, you can also configure a Repeat Delay (in milliseconds) that adds a pause between each repetition of the sequence. This controls the speed of the loop.

Example -- Turbo fire: Set fire mode to While Held, repeat mode to Until Release, with a single Button Press A (50ms) action and a Repeat Delay of 50ms. Hold the trigger and A is mashed rapidly at roughly 10 presses per second.


Consume Trigger Buttons

When Consume trigger buttons is enabled (the default), the trigger inputs are removed from the virtual controller output so the game does not see them. This prevents the game from receiving both the trigger presses and the macro output.

Disable this option if you want the trigger inputs to pass through to the game alongside the macro actions.

Example: If your macro trigger is LB + RB and "Consume" is on, the game never sees LB or RB being pressed -- it only sees whatever actions the macro outputs. If "Consume" is off, the game sees LB + RB and the macro output at the same time.

Note: Consumption only applies to button triggers on the virtual controller output. Raw device button triggers (from Input Device source) are not part of the combined gamepad state, so they cannot be consumed.


Continuous vs. Sequential Actions

Understanding the difference between continuous and sequential actions is important for building effective macros.

Sequential actions (Button Press, Button Release, Key Press, Key Release, Delay, Axis Set, Mouse Button Press, Mouse Button Release) execute one at a time, in order, advancing through the list step by step.

Continuous actions (System Volume, App Volume, Mouse Move, Mouse Scroll) run every frame, all at once, in parallel. They do not block each other or the sequential actions. If your macro has two Mouse Move actions and a Button Press, both Mouse Move actions run simultaneously on every frame while the Button Press executes in sequence alongside them.

This means you can freely mix continuous and sequential actions in the same macro. For example, a macro could move the mouse cursor (continuous) while also pressing keyboard keys (sequential) at the same time.


Common Macro Recipes

Here are practical examples of macros users commonly set up. Each recipe lists the fire mode, actions, and any relevant settings.

1. Left Trigger as a System Volume Knob

Turn your left trigger into a hardware volume dial -- squeeze to raise volume, release to lower it.

  • Fire mode: Always
  • Actions:
    1. System Volume: Left Trigger axis, Volume Limit 50%, Show volume OSD on
  • Notes: Always mode keeps this running at all times with no button press needed. The Volume Limit of 50% prevents accidentally blasting audio at full volume. The trigger's position directly controls the volume level in real time.

2. Right Stick as Mouse Cursor (Gamepad-to-Desktop)

Use your right analog stick to move the mouse cursor, turning your gamepad into a desktop controller.

  • Fire mode: Always
  • Actions:
    1. Mouse Move: Right Stick X, sensitivity 15
    2. Mouse Move: Right Stick Y, sensitivity 15
  • Notes: Both Mouse Move actions run in parallel every frame. Adjust sensitivity to taste -- lower for precision, higher for speed. Pair this with separate macros for mouse button clicks (see below).

3. Bumpers as Mouse Left/Right Click

Pair with the mouse cursor recipe above to get full mouse control from your gamepad.

  • Macro 1 -- Left Click:
    • Fire mode: On Press
    • Trigger: LB
    • Actions: Mouse Button Press: Left (50ms)
  • Macro 2 -- Right Click:
    • Fire mode: On Press
    • Trigger: RB
    • Actions: Mouse Button Press: Right (50ms)

4. Turbo Fire (Rapid Button Mash)

Hold a trigger to mash the A button rapidly -- useful for games that reward button mashing.

  • Fire mode: While Held
  • Trigger: Right Trigger axis (threshold 50%)
  • Repeat mode: Until Release
  • Repeat delay: 50ms
  • Actions:
    1. Button Press: A (30ms)
  • Notes: While the trigger is held past 50%, the A button is pressed and released in a loop roughly every 80ms (30ms press + 50ms repeat delay). Release the trigger to stop.

5. Per-App Music Volume Control

Control Spotify's volume independently with a bumper + stick, without affecting game audio.

  • Fire mode: While Held
  • Trigger: LB (button)
  • Actions:
    1. App Volume: Left Stick Y axis, process name "Spotify", Volume Limit 80%
  • Consume trigger buttons: On (so the game does not see LB)
  • Notes: Hold LB and move the left stick up/down to adjust Spotify's volume from 0% to 80%. The game never sees LB because consumption is enabled. When you release LB, the volume stays where you left it.

6. Quick Chat / Emote Combo

Press a button combo to execute a multi-step input sequence for an in-game quick chat or emote.

  • Fire mode: On Press
  • Trigger: D-pad Down + A
  • Actions:
    1. Key Press: T (50ms) -- opens chat
    2. Delay: 100ms
    3. Key Press: G (50ms) -- types "g" for "gg"
    4. Delay: 50ms
    5. Key Press: G (50ms)
    6. Delay: 50ms
    7. Key Press: Return (50ms) -- sends the message
  • Notes: The entire sequence fires once on a single button press. Adjust delays if the game needs more time between keystrokes.

Custom DirectInput Button Support

When a slot is set to DirectInput with the Custom preset, macros support up to 128 buttons. The trigger recording and button action lists dynamically expand to show all available buttons based on the ButtonCount setting.

For Xbox 360 and DualShock 4 output types (or DirectInput with gamepad presets), macros use the standard gamepad button names (A, B, X, Y, LB, RB, etc.).


Tips

  • Keep delays realistic. Very short delays (under 10ms) may not register in some games. Start with 50ms and reduce from there.
  • Test macros in-game. What works on paper may need timing adjustments for specific titles.
  • Use "Consume trigger buttons" to avoid the game seeing both your trigger press and the macro output.
  • Use "Always" mode for macros that should run continuously without any button press, such as stick-to-mouse mapping or volume knobs.
  • Combine trigger types for precise activation -- require both a button press and a stick deflection before the macro fires, reducing accidental triggers.
  • Multiple continuous actions in one macro all run in parallel. Two Mouse Move actions (X and Y) in the same macro give you full 2D cursor control.
  • Use Volume Limit on volume macros to protect your ears. A limit of 30-50% is a good starting point.
  • Sensitivity tuning for mouse actions: Start with sensitivity around 10--15 for cursor movement. For scrolling, 3--5 is usually comfortable. You can always adjust later.
  • Profile-aware macros: Macros are saved per-profile, so you can have completely different macro setups for different games using Profiles.

Related Pages

Clone this wiki locally