# Macro Recorder
A simple PySide6/Qt application for recording and replaying keyboard input. The app offers three macro slots, customizable playback timing, and persistent storage so you can automate repetitive tasks from the desktop.

## Features
- Record key presses/releases with their timing
- Store up to three independent macros
- Configure repetitions and per-key delays before playback
- Inspect recorded events directly within the GUI
## Requirements
- Python 3.10+
- PySide6 (Qt 6) runtime — installing the project with `pip` pulls the prebuilt Qt wheels for Linux, macOS, and Windows
> **Note:** The project uses `pynput` for keyboard hooks. On Linux, that dependency will additionally pull in `evdev` and `python-xlib`; on macOS it uses `pyobjc` frameworks, and on Windows it installs `pywin32`. macOS users must grant the terminal or Python executable “Accessibility” permissions so key capture can work, and Windows users should allow the app through any desktop security prompts the first time they run it.
## Installation
Install from PyPI:
```console
pip install linux_macrorecorder
```
Or work from source:
```console
git clone https://github.com/werzum/MacroRecorder.git
cd MacroRecorder
python -m venv .venv
source .venv/bin/activate # use .venv\Scripts\activate on Windows PowerShell
pip install -e .
```
## Running the application
Launch the GUI with:
```console
python -m macrorecorder
```
If you installed the package globally, you can also use the console script:
```console
macrorecorder
```
Macros, slot-specific delays, and repetition counts are stored in your platform’s user data directory (for example: `~/.local/share/MacroRecorder/recorded_keys.json` on Linux, `%APPDATA%\\MacroRecorder\\recorded_keys.json` on Windows, or `~/Library/Application Support/MacroRecorder/recorded_keys.json` on macOS). Your latest GUI adjustments are saved automatically when you stop recording or close the app, so the same values are restored the next time you launch Macro Recorder on any supported platform.
## Typical workflow
1. Start the Macro Recorder GUI.
2. Choose a macro slot (1–3).
3. Click **Start Recording**, switch to the target application, and perform the actions you want captured.
4. Return to Macro Recorder and click **Stop Recording**.
5. Adjust repetitions and delays as needed.
6. Click **Play Recorded Script** to replay the macro.
The GUI displays the captured events for the active slot so you can review timing and key order before playback.
Raw data
{
"_id": null,
"home_page": null,
"name": "linux_macrorecorder",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "automation, keystrokes, macro, recorder",
"author": null,
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/27/1d/53358c097babaf2600febfddd37c3fb3bc797be9f8f3439abd933f1c5ae1/linux_macrorecorder-1.0.3.tar.gz",
"platform": null,
"description": "# Macro Recorder\n\nA simple PySide6/Qt application for recording and replaying keyboard input. The app offers three macro slots, customizable playback timing, and persistent storage so you can automate repetitive tasks from the desktop.\n\n\n\n## Features\n\n- Record key presses/releases with their timing\n- Store up to three independent macros\n- Configure repetitions and per-key delays before playback\n- Inspect recorded events directly within the GUI\n\n## Requirements\n\n- Python 3.10+\n- PySide6 (Qt 6) runtime \u2014 installing the project with `pip` pulls the prebuilt Qt wheels for Linux, macOS, and Windows\n\n> **Note:** The project uses `pynput` for keyboard hooks. On Linux, that dependency will additionally pull in `evdev` and `python-xlib`; on macOS it uses `pyobjc` frameworks, and on Windows it installs `pywin32`. macOS users must grant the terminal or Python executable \u201cAccessibility\u201d permissions so key capture can work, and Windows users should allow the app through any desktop security prompts the first time they run it.\n\n## Installation\n\nInstall from PyPI:\n\n```console\npip install linux_macrorecorder\n```\n\nOr work from source:\n\n```console\ngit clone https://github.com/werzum/MacroRecorder.git\ncd MacroRecorder\npython -m venv .venv\nsource .venv/bin/activate # use .venv\\Scripts\\activate on Windows PowerShell\npip install -e .\n```\n\n## Running the application\n\nLaunch the GUI with:\n\n```console\npython -m macrorecorder\n```\n\nIf you installed the package globally, you can also use the console script:\n\n```console\nmacrorecorder\n```\n\nMacros, slot-specific delays, and repetition counts are stored in your platform\u2019s user data directory (for example: `~/.local/share/MacroRecorder/recorded_keys.json` on Linux, `%APPDATA%\\\\MacroRecorder\\\\recorded_keys.json` on Windows, or `~/Library/Application Support/MacroRecorder/recorded_keys.json` on macOS). Your latest GUI adjustments are saved automatically when you stop recording or close the app, so the same values are restored the next time you launch Macro Recorder on any supported platform.\n\n## Typical workflow\n\n1. Start the Macro Recorder GUI.\n2. Choose a macro slot (1\u20133).\n3. Click **Start Recording**, switch to the target application, and perform the actions you want captured.\n4. Return to Macro Recorder and click **Stop Recording**.\n5. Adjust repetitions and delays as needed.\n6. Click **Play Recorded Script** to replay the macro.\n\nThe GUI displays the captured events for the active slot so you can review timing and key order before playback.\n",
"bugtrack_url": null,
"license": null,
"summary": "Simple macro recorder for keystrokes on X and Wayland",
"version": "1.0.3",
"project_urls": {
"Homepage": "https://github.com/werzum/MacroRecorder"
},
"split_keywords": [
"automation",
" keystrokes",
" macro",
" recorder"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "044d5c28764b8862a8ccdff7130e82e277ee6e2a104f12803853850ea7cae9f2",
"md5": "0151b957a404f8bf98944960332a68d3",
"sha256": "684abb3c8e2cc29c4c580f61cdef19455875a5c898516968a13b71f5fdf28a1c"
},
"downloads": -1,
"filename": "linux_macrorecorder-1.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0151b957a404f8bf98944960332a68d3",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 20883,
"upload_time": "2025-10-24T11:39:54",
"upload_time_iso_8601": "2025-10-24T11:39:54.205967Z",
"url": "https://files.pythonhosted.org/packages/04/4d/5c28764b8862a8ccdff7130e82e277ee6e2a104f12803853850ea7cae9f2/linux_macrorecorder-1.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "271d53358c097babaf2600febfddd37c3fb3bc797be9f8f3439abd933f1c5ae1",
"md5": "b21f6681ad87a3324a4e401f67112f57",
"sha256": "2a2a605cfb71b364f55a9c13c7c546b0d81c20da7125ccca28805451c77f1b8b"
},
"downloads": -1,
"filename": "linux_macrorecorder-1.0.3.tar.gz",
"has_sig": false,
"md5_digest": "b21f6681ad87a3324a4e401f67112f57",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 55195,
"upload_time": "2025-10-24T11:39:55",
"upload_time_iso_8601": "2025-10-24T11:39:55.564199Z",
"url": "https://files.pythonhosted.org/packages/27/1d/53358c097babaf2600febfddd37c3fb3bc797be9f8f3439abd933f1c5ae1/linux_macrorecorder-1.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-24 11:39:55",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "werzum",
"github_project": "MacroRecorder",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "linux_macrorecorder"
}