Auto-Key-Presser · Macro Recorder

Capture. Edit. Replay.

Record keyboard + mouse macros on your desktop, edit them as JSON, replay at any speed with loop counts, a dry-run preview, and an Esc abort.

Honest split — what runs where: this web page cannot record your keyboard or mouse, and its “play” button does not press keys or click anything — browsers can't do that. Recording and live playback run on your desktop with the Python tool below. What this page really does: edit and validate real macro JSON (same schema the Python tool enforces), simulate playback with the macro's true timestamps, and download a runnable .json file. No accounts, no server: editor saves live only in your browser's localStorage.

Record — desktop

Capture keystrokes, clicks and timing with pynput — saved as editable JSON. Press Esc to stop; the Esc press itself is stripped from the recording.

Edit — here + JSON

Filter noise, trim a time range, drop mouse moves, remap keys — macros are data. The editor below validates every event before you download.

Replay — desktop

Loop counts, 0.25×–4× speed control, dry-run preview that touches nothing, Esc aborts instantly. Simulate first, here or with --dry-run.

Macro editor — real JSON, validated, downloadable

Edit the sample (it uses the real schema: key_down, key_up, mouse_move, mouse_down, mouse_up — the same schema python cli.py validate enforces). Invalid files are refused with the exact problem, not silently accepted.

Remap applies to the preview, the simulation, and the download. Nothing is uploaded anywhere.

Playback timeline — simulation with true timing

SIMULATION ONLY — no keys are pressed, nothing is clicked. Steps fire after the macro's real gaps between events ÷ speed (the old demo used fixed 600 ms steps; this one doesn't). Press Esc on this page to stop the simulation.

Dry-run safety preview — what the desktop run would do

The same numbers python cli.py play --dry-run reports: exact step count and total time, before anything touches your inputs. Run the command shown on your machine to confirm.

Run it on your desktop

pip install -r requirements.txt   # pynput — record / live playback only
python cli.py record --out demo.json
python cli.py validate demo.json
python cli.py info demo.json
python cli.py play demo.json --loops 2 --speed 1.5 --dry-run   # safe: touches nothing
python cli.py play demo.json --loops 2 --speed 1.5             # live: Esc stops
python test_macro.py   # 45 headless checks, no display needed
Responsible use: built for UI testing, accessibility, and personal productivity. Only record and replay input on machines and applications you own or have explicit permission to automate. Never use macros to spam, harass, cheat where automation is prohibited, or break any platform's terms.