Desktop macro recorder/player built with Python, customtkinter, and pynput.
It can:
- record keyboard and mouse actions
- edit recorded actions in the UI
- add, delete, and reorder actions
- save and load macros as JSON
- configure global control keys from the Settings menu
- add a fixed extra delay between playback actions
- Windows
- Python 3.10+ recommended
- PowerShell (for the build script)
- Oblitum Interception Driver (must be installed on the system for kernel-level inputs)
Create and activate a virtual environment, then install dependencies:
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txtStart the app from the repo root:
.\.venv\Scripts\python.exe main.pyNote: For script execution, either ensure the Interception driver is in your system path, or place
interception.dllin thedist/folder.
- Click
Recordor use the configured record hotkey. - Perform the keyboard/mouse actions you want to capture.
- Click
Stop. - Select any recorded action in the list to edit its fields.
- Use
Add Action,Delete Action,Move Up, andMove Downto adjust the sequence. - Set
Loopsand optionalExtra Delay (ms)before playback. - Click
Play.
Open Settings -> Control Keys to change the global hotkeys for:
- record
- play
- stop (primary)
- stop (secondary)
The app stores these settings in settings.json next to the script or built executable.
Use the included PowerShell script to install dependencies into the local venv and build with PyInstaller:
.\build_exe.ps1To force a clean rebuild:
.\build_exe.ps1 -CleanIf MacroRecorder.spec exists, the script uses it. Otherwise it falls back to building from main.py.
The output executable is expected at:
dist\MacroRecorder.exe
Important: To ensure the executable functions properly, you MUST place
interception.dllin thedist\folder alongsideMacroRecorder.exe.
main.py: UI and settingsbackend.py: recording, event normalization, and playbackbuild_exe.ps1: venv-aware build scriptMacroRecorder.spec: PyInstaller spec
- Global hotkeys depend on the OS allowing
pynputhooks. - Some applications may block or ignore simulated input generated by automation tools.
- Saved macros are plain JSON and can be versioned or edited manually if needed.