A Windows desktop app (PyQt6) for building and running keyboard/mouse macros and a gaming remap mode. Covers typed text, special keys, timed waits, mouse moves/clicks/scrolls, and drag sequences with absolute screen coordinates. A recorder captures real workflows live; a simple token language drives the executor.
- Record keyboard and mouse actions into a replayable macro.
- Build macros manually with a token-based language.
- Gaming remap (hold) mode: remap keys with hold detection, useful for repeated or held actions in games.
- Overlay showing macro state, on any monitor corner.
- Autosave to
catrina.catrinaon exit, auto-imported on next launch.
| Token | Effect |
|---|---|
[TYPE{text}] |
Type a string |
[KEY{Enter}] |
Press a key |
[WAIT{500}] |
Wait 500 ms |
[MOVE{x,y}] |
Move mouse to absolute coordinates |
[CLICK{left}] |
Click mouse button |
[SCROLL{3}] |
Scroll wheel |
[DRAG{x1,y1,x2,y2}] |
Drag from point to point |
Min/Max jitter can be applied automatically to every [WAIT{...}] via the UI.
Requires Python 3.10+ on Windows.
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python catrina.pyDependencies: PyQt6, keyboard, mouse, pywin32. vgamepad is optional (Xbox virtual gamepad, disabled by default).
| Key | Action |
|---|---|
| F10 | Start macro |
| F11 | Stop macro |
| F9 | Toggle gaming remap mode |
| F8 / F12 | Stop recording |
- Mouse coordinates are absolute. Adjust if you change resolution or DPI.
- Add small waits between UI actions to prevent race conditions with async windows.
- Macros act on the foreground window. Make sure the right app has focus before playback.
- CTRL+ALT+DELETE cannot be synthesized by design.
- Run as Administrator if global hotkeys fail to register.
- Overlay not visible: enable the Overlay checkbox and pick a corner. On multi-monitor setups it uses the primary screen geometry.
- Recorded drags become clicks: the drag distance was below the threshold. Drag further or adjust the threshold in code.
- Too fast or slow: insert
[WAIT{...}]tokens or set Min/Max jitter in the UI.
Logs are written to catrina.log (rotating). Enable Debug in the UI for verbose output.
MIT. See LICENSE.