-
Notifications
You must be signed in to change notification settings - Fork 6
Macros
Macros trigger action sequences from controller inputs — button combos, stick deflection, D-pad directions, or no trigger at all. Actions include button presses, keystrokes, mouse control, delays, volume changes, and axis overrides. Configured per slot on the Macros tab.

- Open a slot and switch to the Macros tab.
- Click Add and name the macro.
- Set up a trigger — the input combination that activates it.
- Add actions — the steps that execute when it fires.
- Configure fire mode, repeat, and other options.
Each macro has an enable checkbox. Disabled macros stay in settings but never fire.
Triggers combine buttons, axes (sticks/triggers), and D-pad directions — all must be active simultaneously for the macro to fire.
Choose where to read the trigger before recording:
| Source | Reads From | Best For |
|---|---|---|
| Output Controller | Virtual controller's mapped output (A, B, X, Y, LB, etc.) | Most setups — device-independent |
| Input Device | Raw physical controller inputs | Device-specific buttons outside standard mapping (touchpad click, pressure buttons, flight stick extras) |
- Click Record Trigger.
- Press and hold the desired button(s) on your controller.
- Deflect a stick or pull a trigger past the threshold to add an axis trigger.
- Press a D-pad direction to add a directional trigger.
- Click Stop when all desired inputs appear in the live display.
Mix and match in one trigger. All must be satisfied simultaneously.
| Component | Behavior |
|---|---|
| Buttons | Most common. Holding LB + A during recording creates a two-button combo — both must be pressed. |
| Axes | Fires when a stick or trigger exceeds a threshold (e.g., "Left Trigger > 50%"). Direction filter: Any (default), Positive (right/up/pressed), or Negative (left/down). Allows separate macros for left-stick-left vs. left-stick-right. |
| D-pad / POV | Fires when the hat switch matches a direction. Uses a 45° sector, so "Up" also catches slight diagonals. |
Combined example: "LB + Right Stick X (Positive) + D-pad Up" — LB held, right stick pushed right past threshold, D-pad up.
When a trigger includes an axis, a threshold slider appears (1–100%, default 50%). The axis must exceed this percentage to activate.
- Low (10%) — slight stick movement fires it
- High (90%) — requires near-full deflection
- With a direction filter, the threshold applies within that half of the axis range
Controls when and how often the macro fires:
| Mode | Fires | Example Use |
|---|---|---|
| On Press | Once on activation | Toggle, one-shot command, single keystroke |
| On Release | Once on trigger release | Charged shot release |
| While Held | Every frame while held | Turbo fire, continuous mouse, real-time volume |
| Always | Every frame, no trigger needed | Stick-to-mouse, permanent volume knob |
Actions execute in order from top to bottom when the macro fires.
Presses or releases a virtual controller button. Button Press has a duration (ms) — held that long, then auto-released.
- Names match the output type: Xbox 360 labels, DualShock 4 labels, or numbered buttons for DirectInput Custom presets.
- Select multiple buttons to press/release simultaneously.
Sends a keyboard keystroke indistinguishable from a real keyboard. Key Press has a duration (ms).
- Key combos supported: Ctrl+C, Ctrl+Alt+Delete, etc. Keys press in order, release in reverse.
- Select from the dropdown or type the combo string directly.
Pauses the action sequence for a specified number of milliseconds.
Overrides a virtual controller axis to a fixed value.
| Axis | Range |
|---|---|
| Stick (LX, LY, RX, RY) | −32768 to 32767 (0 = center) |
| Trigger (LT, RT) | 0 to 32767 (0 = released) |
Maps a controller axis to Windows master volume (0–100%), updated every frame.
- Axis — which axis drives volume (e.g., Left Trigger, Right Stick Y)
- Invert axis — reverses direction (release trigger = louder)
- Show volume OSD — displays the Windows volume flyout (on by default)
- Volume Limit — caps maximum volume (see Volume Limit)
Controls a specific application's volume in the Windows audio mixer, independent of master volume.
- Process name — the target app (e.g., "spotify", "firefox", "Discord"). Auto-suggest lists apps currently producing audio.
- Other options match System Volume: axis, invert, volume limit.
Maps a controller axis to continuous cursor movement, updated every frame.
- Axis — sticks give bidirectional movement; triggers give unidirectional
- Sensitivity (1–100) — pixels per frame at full deflection. Start at 10–15.
- X axes map to horizontal, Y axes to vertical automatically.
- Sub-pixel accumulation ensures smooth movement at low sensitivity.
Presses or releases a mouse button. Press has a duration (ms) and auto-releases. Supported: Left, Right, Middle, X1 (Back), X2 (Forward).
Maps a controller axis to continuous scroll wheel movement, updated every frame.
- Sensitivity — scroll units per frame at full deflection
- Stick Y axes give bidirectional scrolling; triggers give one-direction
Both System Volume and App Volume have a Volume Limit slider (1–100%), capping maximum volume regardless of axis position. Shown as "(max N%)" in the action list.
Full trigger pull normally hits 100%. A limit of 30% caps it there — protects your ears.
Continuous actions (System Volume, App Volume, Mouse Move, Mouse Scroll) read an axis value from one of two sources:
| Source | Description |
|---|---|
| Output Controller (default) | Virtual controller's combined output — reflects deadzone, range, inversion. Device-independent. |
| Input Device | Raw input from a specific physical controller. Pick device and axis from dropdowns. |
Use Input Device when the axis is unmapped (e.g., throttle lever for volume), needs to stay on a specific device, or should bypass mapping transformations.
Two optional controls on volume and mouse actions:
- Invert axis — reverses direction. Volume: releasing trigger = louder. Mouse: reverses cursor.
- Show volume OSD — toggles the Windows volume flyout (on by default, System Volume only). Updates at ~5 Hz to avoid overlay spam.
- Click Add Action and choose the type.
- Configure it (button, key, delay, etc.).
- Add more as needed — executes top to bottom.
- Click delete to remove an action.
Example — Quick melee combo:
- Button Press: Y (50ms)
- Delay: 100ms
- Button Press: B (50ms)
Example — Stick-to-mouse aiming (Always mode):
- Mouse Move: Right Stick X, sensitivity 15
- Mouse Move: Right Stick Y, sensitivity 15
| Mode | Behavior | Example Use |
|---|---|---|
| Once | Runs one time | One-shot command, single key press |
| Fixed Count | Repeats N times | Tap a button exactly 3 times for a combo |
| Until Release | Loops until trigger released (requires While Held) | Turbo fire, rapid mashing |
Fixed Count and Until Release support a Repeat Delay (ms) between each repetition.
Example — Turbo fire: While Held + Until Release, Button Press A (50ms), repeat delay 50ms. A mashes every ~100ms (~10/sec) while held.
When enabled (default), trigger buttons are removed from virtual controller output so the game never sees them — only the macro output reaches the game. Disable to let trigger buttons pass through alongside macro actions.
Example: Trigger = LB + RB, Consume on — game sees only macro output. Consume off — game sees LB + RB and macro output.
Note: Consumption applies only to button triggers on Output Controller. Input Device triggers are not part of the combined gamepad state and cannot be consumed.
| Type | Actions | Behavior |
|---|---|---|
| Sequential | Button/Key/Mouse Button Press/Release, Delay, Axis Set | One at a time, top to bottom |
| Continuous | System Volume, App Volume, Mouse Move, Mouse Scroll | Every frame, all in parallel |
Both types mix freely. Two Mouse Move actions (X + Y) run simultaneously while a Button Press in the same macro executes in sequence alongside them.
- Fire mode: Always
- Actions: System Volume — Left Trigger axis, Volume Limit 50%, OSD on
- Notes: Always mode = no trigger needed. Volume Limit prevents accidental blasts.
- Fire mode: Always
-
Actions:
- Mouse Move: Right Stick X, sensitivity 15
- Mouse Move: Right Stick Y, sensitivity 15
- Notes: Both run in parallel every frame. Lower sensitivity = precision, higher = speed. Pair with mouse button macros below.
Pair with the mouse cursor recipe above for full mouse control.
| Macro | Fire Mode | Trigger | Action |
|---|---|---|---|
| Left Click | On Press | LB | Mouse Button Press: Left (50ms) |
| Right Click | On Press | RB | Mouse Button Press: Right (50ms) |
- Fire mode: While Held
- Trigger: Right Trigger axis (threshold 50%)
- Repeat: Until Release, delay 50ms
- Actions: Button Press: A (30ms)
- Notes: A presses every ~80ms (30ms press + 50ms delay) while trigger exceeds 50%. Release to stop.
- Fire mode: While Held
- Trigger: LB
- Consume trigger buttons: On
- Actions: App Volume — Left Stick Y axis, process "Spotify", Volume Limit 80%
- Notes: Hold LB, move left stick up/down to adjust Spotify (0–80%). Game never sees LB. Volume stays where you leave it.
- Fire mode: On Press
- Trigger: D-pad Down + A
-
Actions:
- Key Press: T (50ms) — opens chat
- Delay: 100ms
- Key Press: G (50ms)
- Delay: 50ms
- Key Press: G (50ms)
- Delay: 50ms
- Key Press: Return (50ms) — sends message
- Notes: Fires once per press. Increase delays if the game needs more time between keystrokes.
DirectInput slots with the Custom preset support up to 128 buttons — trigger recording and button action lists expand dynamically based on ButtonCount. Xbox 360, DualShock 4, and DirectInput gamepad presets use standard button names.
- Delays under 10ms may not register in some games. Start at 50ms and reduce.
- Test in-game — timing needs vary per title.
- Combine trigger types (button + stick deflection) to reduce accidental activation.
- Volume Limit 30–50% is a safe starting point for protecting your ears.
- Mouse sensitivity: 10–15 for cursor, 3–5 for scrolling.
- Profile-aware: Macros save per-profile — different games get different setups via Profiles.
- Button and Axis Mappings — Set up base mappings before adding macros
- Controller Slots — Each slot has its own independent macros
- Devices — Assign physical devices for Input Device trigger sources
- Force Feedback — Rumble and vibration settings
- Profiles — Macros save per-profile for per-game configurations
- Troubleshooting — Help with macro issues