Lightweight Windows desktop utility for recording, editing, saving, loading, and replaying mouse click workflows.
ClickForMe is designed as a practical open-source productivity tool for simple repetitive desktop tasks. It focuses on clear controls, screen-aware playback, editable timing, and a modular Python codebase that is structured for packaging as a Windows executable.
Repository: github.com/suspiriaa/ClickForMe
Current package version: 0.1.0
- Global hotkeys for starting, stopping, replaying, and clearing recordings
- Mouse click recording with per-step timing
- Mouse button-aware recording and playback for left, right, middle, and side buttons
- Mouse wheel scroll up/down recording and playback
- Basic single-key keyboard recording and playback
- Input backend architecture prepared for Windows, macOS, and Linux platform adapters
- Windows backend now includes an additional low-level XBUTTON hook attempt for side mouse buttons
- Editable delay values between recorded actions
- Save and load recordings with a custom
.cfm.jsonformat - Validation for malformed
.cfm.jsonfiles with clearer load errors - Resolution-aware playback using proportional coordinates
- Multi-monitor-aware action handling
- Optional human-like click variation for less rigid movement
- Built-in multi-language UI support with a translation catalog
- Lightweight Tkinter-based desktop interface
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txtFor local development and tests:
.\.venv\Scripts\python.exe -m pip install -e .[dev]Run the app with the thin launcher in app.py.
.\.venv\Scripts\python.exe app.pyDefault hotkeys:
F6starts recordingF7stops recordingF8starts or stops playbackF9clears the current recordingF10pauses or resumes playback
On Windows, the input inspector can also surface keyboard-style fallback events such as key:f13 when a mouse vendor tool maps extra buttons to keyboard keys instead of native mouse buttons. Vendor-specific HID-only mouse buttons are still not guaranteed until a raw input layer is added.
Run the current regression checks with:
.\.venv\Scripts\python.exe -m pytestAutomated coverage includes serializer round-trips, payload validation, proportional coordinate resolution, player behavior, recorder behavior, and translation completeness.
ClickForMe/
|-- app.py
|-- CHANGELOG.md
|-- pyproject.toml
|-- requirements.txt
|-- LICENSE
|-- README.md
|-- .github/
| |-- workflows/
| | `-- ci.yml
|-- docs/
| |-- localization.md
| |-- roadmap.md
| |-- release-checklist.md
| |-- release-notes-v0.1.0.md
| `-- smoke-test.md
|-- screenshots/
| |-- click.gif
| |-- lang.gif
| `-- ss-1.png
|-- logos/
|-- tests/
`-- src/
|-- clickforme/
|-- __init__.py
|-- i18n.py
|-- input_backends/
| |-- __init__.py
| |-- base.py
| |-- factory.py
| |-- generic_pynput.py
| |-- linux.py
| |-- macos.py
| `-- windows.py
|-- main.py
|-- models.py
|-- mouse_buttons.py
|-- player.py
|-- recorder.py
|-- screen_utils.py
|-- serializer.py
|-- ui_actions.py
|-- ui_selection.py
|-- ui_storage.py
`-- ui.py
models.py: shared recording and monitor data structuresmouse_buttons.py: mouse button normalization and display helpersrecorder.py: mouse recording flow and event captureplayer.py: playback scheduling and click executionserializer.py: save and load support for.cfm.jsonscreen_utils.py: monitor detection and coordinate conversioni18n.py: translation catalog, language options, and UI copy helpersinput_backends/base.py: shared backend protocol and normalized click event modelinput_backends/factory.py: runtime backend selection by platforminput_backends/generic_pynput.py: cross-platform fallback backendinput_backends/windows.py: Windows-specific input backendinput_backends/macos.py: macOS input backendinput_backends/linux.py: Linux input backendui_actions.py: shared button and hotkey action definitions for the desktop UIui_selection.py: selection text and action-editing helpers for the recording listui_storage.py: save/load helpers that bridge UI flows with serializer validationui.py: desktop interface orchestrationmain.py: package entry point
See docs/roadmap.md for current priorities and next-stage improvements. See docs/smoke-test.md for release-oriented manual test coverage, docs/localization.md for translation maintenance, docs/release-checklist.md for first-release prep, and CHANGELOG.md for release history.
ClickForMe is intended for legitimate desktop workflow automation and repetitive productivity tasks.
- Use it only on systems and workflows you control or are authorized to automate.
- Do not position or distribute it as a cheating, stealth, or malicious utility.
- Review your local rules, platform policies, or workplace requirements before using automation tools.
If you would like to support ongoing development, you can follow the project on Patreon.
This repository uses the MIT License. See LICENSE.


