Documentation

The complete Reflex guide

Everything you need to build macros — from drag-and-drop steps to full Lua scripts, remaps, camera turns and more. Use the search or the menu to jump around.

Install & activate

Reflex is a single small app for Windows 10 and 11 — nothing else to install.

  1. Buy Reflex ($8, one-time). Your license key is shown right after checkout and emailed to you.
  2. Download Reflex and run it. The first time you open it, you'll be asked for your license key — paste it in and click Activate.
  3. Accept the license agreement, and you're in.
🔑
Your key works on one PC. Changing computers? Reset it yourself in the dashboard (once every 30 days), then enter the key on the new PC.
🛡️
First launch may show a blue “Windows protected your PC” screen, because Reflex is a new app from an independent developer. Click More info → Run anyway. It's safe.

Sign in with your account

You don't need an account to use Reflex, but it's handy. Create one at reflexmacros.com/dashboard to view your key, reset your PC, download the latest version, and connect Discord for the customer role.

Two ways to link the app and your account:

  • Key in the dashboard first: in Reflex click Sign in with your Reflex account on the activation screen. Your browser opens, you click Connect, and Reflex activates — no typing.
  • Key typed in the app first: use the ••• menu → Connect to Reflex account, then Connect in the browser. Your key then shows up in the dashboard.

The window at a glance

Macro list (left)

All your macros and folders. Drag to reorder, or into a folder. Click one to edit it.

Editor (middle)

The selected macro's steps — or its script. Toggle between Steps and Script at the top.

Settings (right)

The keybind, playback mode, and which app the macro is allowed to run in.

Top bar

The master Macros switch, update notices, and Stop all.

↔️
Need more room? Use the chevron buttons in the top bar to hide or show the macro list and the settings panel — the editor grows to fill the space.
💾
Everything is saved automatically on your PC in %APPDATA%\Reflex. Your macros carry across updates.

Keybinds

Every macro has a trigger. Click the keybind box on the right, then press the key, combo, or mouse button you want — including side buttons (Mouse 4/Mouse 5) and the scroll wheel.

  • Block the key — stops the trigger from also reaching the game (so a bound key only runs your macro).
  • Click the small ✕ on a keybind to clear it back to none.

Playback modes

How the macro plays when you press its key:

ModeWhat it does
OnceRuns through one time per press.
RepeatRuns a set number of times per press.
TogglePress once to start looping, press again to stop. Great for auto clickers and holds.
HoldLoops only while you hold the key down; stops when you let go.
🔁
In Toggle and Hold, the whole macro — including a wait at the end — repeats, so you control the loop's pace with a final Delay step or sleep().
🖱️
A Toggle macro also gets an Active switch in its settings — flip it to start or stop the macro right from the app, with no keybind needed. The switch and the keybind stay in sync, so either one turns it on or off.

Enable & disable

Each macro has an Enabled switch — turn one off to keep it without it responding to its key. The master Macros switch in the top bar disables everything at once. Stop all halts anything currently running and releases held keys.

Step types

Click Add step to build a macro visually. Steps run top to bottom. Drag the grip to reorder, and use the chevron on a step to change its type.

Keyboard

  • Keystroke — press and release a key. Set a hold time (many games need a few ms to register).
  • Key down / Key up — hold a key until a later Key up (or Stop all / the kill switch).
  • Type text — types a string as real key presses, with a gap between characters.

Mouse

  • Click — press and release a button (left, right, middle, Mouse 4/5), with a hold time.
  • Button down / Button up — hold a mouse button.
  • Move to — jump the cursor to a screen position. Use Pick to capture your cursor's spot.
  • Move by — nudge the cursor by an offset in pixels.
  • Turn — turn the game camera by degrees (see Turn).
  • Scroll — turn the wheel a number of notches (+ up, − down), with a Horizontal option.

While running

  • Remap / Block — change or disable a key only while the macro runs (see Remap & block).

Timing

  • Delay — wait a fixed time. Random delay waits a random time in a range.

Timing & randomness

All times are in milliseconds (1000 ms = 1 second). Clicks, keystrokes and typing have a hold value (how long the button stays down) and a Random chip — turn it on to pick a fresh random value in a range on every press, which looks more human and less robotic.

Recording

Click Record to capture keystrokes and clicks as steps in real time. Optionally record mouse movement too. Press Record again to stop. You can edit, reorder or delete any captured step afterwards.

Folders & order

Make a folder from the new-folder button above the macro list, then drag macros into it to group them (for example per game). Drag macros and folders to reorder — the order in the list is just for you, it doesn't affect how macros run.

Writing a script

For anything beyond a straight list of steps — loops, conditions, randomness, reacting to input — switch a macro to Script and write Lua. The script runs once per playback (and repeats in Toggle/Hold modes). Times are in milliseconds, and Ctrl + Shift + F12 stops everything instantly.

-- Fire in 3-round bursts while the key is held (Hold mode)
for i = 1, 3 do
  click()
  sleep(60, 90)   -- random gap, feels human
end
sleep(250)         -- wait before the next burst

The editor checks your script for errors as you type, and the Output panel shows anything you print() plus any errors with line numbers. The sandbox has no file, network or OS access — only the functions below.

Steps ⇄ Script

The Steps / Script toggle at the top of the editor converts between the two:

  • Steps → Script turns your steps into the matching script, so you can learn the code or extend it.
  • Script → Steps converts a simple, linear script back into steps. A script that uses loops, conditions or variables can't be shown as steps, so Reflex keeps it as a script and tells you why.

A simple reload macro, built from steps:

  • Keystroke R
  • Delay 1500 ms
  • Keystroke 1
press("r")
sleep(1500)
press("1")

API reference

Every function available in a script. Arguments in [brackets] are optional. Times are milliseconds.

press(key [, hold [, holdMax]])

Tap a key (press and release). hold is how long it's held (default 15 ms). Two values pick a random hold between them. press("e"), press("space", 20, 45).

down(key)  /  up(key)

Hold a key down, then release it later. A held key stays down until up(), Stop all, or the kill switch.

combo(keys)

Press a key combination, e.g. combo("ctrl+shift+s"). Modifiers are held while the last key is tapped.

type(text [, gap [, gapMax]])

Type text as real key presses on your keyboard layout. gap is the pause between characters (default 30 ms). type("gg wp\n").

click([button [, hold [, holdMax]]])

Click a mouse button. Default "left"; also "right", "middle", "x1", "x2".

mouse_down(button)  /  mouse_up(button)

Hold a mouse button down, then release it.

move(x, y)

Move the cursor to a screen position in pixels (0, 0 is the top-left of your main monitor).

move_by(dx, dy)

Move the cursor by an offset. Good for raw-input games that read relative motion.

turn(right, up [, ms [, full]]) camera

Turn the game camera by degrees. Negative = left / down. ms spreads the turn over time (0 = instant). full = mouse counts for a 360° turn (default 16364). See Turn.

scroll(n)  /  hscroll(n)

Scroll the wheel n notches. Positive = up / right, negative = down / left.

sleep(ms [, maxMs])  /  wait(ms [, maxMs])

Wait. With two values, waits a random time in that range. sleep(100), sleep(50, 120).

random(a, b)

Returns a random whole number between a and b (inclusive). move_by(random(-3, 3), 0).

iteration global

A number, not a function: the current playback pass, starting at 1. Useful in Toggle/Hold loops.

These keep working until the macro stops, so use them with Toggle or Hold, or end the script with idle().

remap(from, to)

While the macro runs, your physical from key acts as to. remap("leftclick", "rightclick").

block(key)

Disable a key while the macro runs. block("q").

unremap(key)

Cancel a remap or block on a key.

idle()

Keep the macro alive (doing nothing) so remaps and blocks stay active until you press the key again. A macro made only of remaps uses no CPU.

is_down(key)

Returns true while a key or mouse button is physically held right now. if is_down("shift") then ... end.

pressed(key)

Returns true once for each new physical press — great for reacting to a click without repeating.

cursor()

Returns the cursor's x, y. local x, y = cursor().

print(...)  /  log(...)

Write a line to the Output panel. Handy for checking what your script is doing.

Keys & buttons

Key names are not case-sensitive. Pass them as strings.

GroupNames you can use
Letters / digits"a" … "z", "0" … "9"
Function keys"f1" … "f24"
Modifiers"ctrl", "shift", "alt", "win" (and "lctrl", "rshift", "ralt"/"altgr" …)
Editing / nav"enter", "esc", "space", "tab", "backspace", "delete", "ins", "home", "end", "pgup", "pgdn", "caps"
Arrows"arrowup", "arrowdown", "arrowleft", "arrowright"
Symbols"-", "=", ",", ".", ";", "/", "[", "]", "\\", "'", "`"
Mouse (for click / mouse_down)"left", "right", "middle", "x1", "x2"
Mouse (for remap / is_down / pressed)"leftclick", "rightclick", "middle", "x1", "x2"
💡
In press(), down(), up() and is_down(), the names "left"/"right" mean the arrow keys. For the mouse buttons there, use "leftclick"/"rightclick".

Examples

Auto clicker (Toggle)

click()
sleep(50, 110)   -- ~9-20 clicks/sec, randomised

Left click acts as right click (Toggle)

remap("leftclick", "rightclick")
idle()   -- keep it active until you toggle off

Only act while holding Shift

if is_down("shift") then
  press("e", 20, 45)
  sleep(120)
end

Quick 180° spin (CS2-style sensitivity)

-- degrees, over 120 ms; calibrate "full" with Test 360° in the Turn step
turn(180, 0, 120, 16364)

Remap & block

A remap makes one key act as another, and a block disables a key — but only while the macro that owns it is running. So put remaps on a Toggle macro (press the keybind to switch them on and off) or a Hold macro. A macro made only of remap/block steps stays active without using CPU.

  • Swap mouse buttons, or map a side button to a key.
  • Disable the Windows key while gaming.
  • Turn one key into a combo by remapping, or block a key you keep hitting by accident.

Turn (game camera)

The Turn step (and turn() in scripts) rotates the in-game camera by a number of degrees — sideways (left/right, 0–360°) and up/down (0–90°) — either instantly or smoothly over a set time.

Right on the step you set the yaw, the pitch and a duration in milliseconds — how long the whole turn takes. Leave it at 0 to snap instantly, or raise it (e.g. 300 ms) for a smooth sweep. The same value is also under Speed in the Aim popup.

Aiming

Open Aim on a Turn step for a preview of the whole view around you, with your monitor in the middle. Drag the dot to aim; hold Shift to snap to 15° steps.

Calibrating for your game

How far a turn moves depends on your game and sensitivity, so set it once:

  • Pick your game and type your in-game sensitivity, then Apply — or
  • Click Test 360°: it waits 5 seconds so you can switch to the game, then turns once around. Overshot? Lower the number. Stopped short? Raise it.
  • Use for all Turn steps copies your calibrated number everywhere.
🎯
For games that read raw mouse input, turns work best when the game is in focus and running at a steady frame rate. If a game runs as administrator, run Reflex as administrator too.

Window targeting

Under Active in (right panel) you can limit a macro to one app, so it never fires on your desktop or in the wrong game:

  • Any app — the keybind works everywhere (default).
  • Process — only when a given program is in focus, e.g. mygame.exe.
  • Window title — only when the focused window's title matches.

Premade macros & share codes

Open Premade Macros for ready-made macros — auto clicker, sprint lock, rapid fire, screenshot, keep-PC-awake and more. Add one, give it a keybind, done. Some are steps, some are scripts (and you can switch a simple script to steps to see how it works).

Share codes

Send a macro to a friend with Copy share code — they paste it into Add from share code and get an exact copy. Codes start with REFLEX-.

⚠️
Macros you get from others are your responsibility — check what a macro does before you run it.

Dashboard

At reflexmacros.com/dashboard you can:

  • View and copy your license key (click the 👁 eye button), and see its status.
  • Reset your PC (HWID) yourself when you switch computers — once every 30 days.
  • Download the latest version of Reflex.
  • Connect Discord to get the customer role in the server automatically.
  • Leave a review, change your password, or sign out everywhere.

Updating

Reflex updates itself. When a new version is out, you'll see a New update ready notice with Relaunch Now or Install on Quit — your macros carry over either way. You can always grab the latest from the dashboard too.

Safety & fair play

🛑
Kill switch: Ctrl + Shift + F12 stops every macro instantly and releases any held keys. Keep it in mind if something runs away.
  • Many online games prohibit macros or automation. It's your responsibility to check and follow each game's rules — using Reflex against them can get you banned, and that's on you, not us.
  • Limit risky macros to the right game with window targeting so they can't fire elsewhere.
  • See the Terms and Privacy Policy for the full details.

Troubleshooting

My macro doesn't do anything in a game

If the game runs as administrator, run Reflex as administrator too (right-click → Run as administrator). Also check the macro is Enabled, the master Macros switch is on, and your window targeting matches the game.

The key triggers the game as well as my macro

Turn on Block the key on the keybind so the trigger doesn't pass through.

Turns go too far or not far enough

Recalibrate the Turn step with Test 360° for your game and sensitivity.

It asks for my key again after a reinstall or new PC

That's expected — a new Windows install or PC is a new machine. Reset your PC in the dashboard, then enter your key again.

Still stuck?

Open a ticket in the Reflex Discord — we'll help you out.