-
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 labels, PlayStation labels, or numbered buttons for Extended Custom profiles.
- 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.
Extended slots running the Custom profile support up to 128 buttons. Trigger recording and button action lists expand dynamically based on ButtonCount. Xbox, PlayStation, and Extended gamepad-shaped HIDMaestro profiles 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