Add your description here
Project description
Clickmate
Clickmate is a macOS-friendly Python autoclicker. It prefers native Quartz CoreGraphics events on macOS (when available) and falls back to pynput or pyautogui. It features randomized delays, adjustable hold time (“pressure”), and a clean single-line status UI.
Features
- Start/Pause with
s - Randomized delay per click (0.5×–1.5× of base)
- Adjust speed with
+(faster) /-(slower) - Adjust hold time with
](increase) /[(decrease) - Toggle click engine with
m(pynput→quartz→pyautogui) - Single test click with
c - Optional jitter movement
jand debug logsd - Global hotkey to lock/unlock local keys:
Ctrl+Alt+K
Defaults: delay 0.50s, hold 0.10s, method quartz (if available), jitter off.
Install and run (uv)
Requires Python >=3.11 and uv.
-
Quick, no install:
uvx clickmate --help uvx clickmate --version uvx clickmate
-
Install as a tool:
uv tool install clickmate # then clickmate
-
From a local checkout:
# run with a fresh, isolated env and pick up local changes uv tool run --from . --refresh clickmate # or install locally as a tool uv tool install .
Development:
uv sync
uv run clickmate --help
uv run clickmate
# or run the module entrypoint
uv run -m autoclicker --help
Tip: If uv tool run --from . clickmate doesn’t reflect local changes, add --refresh (above). Alternatively, bump the version in pyproject.toml or uninstall/reinstall the tool:
uv tool uninstall clickmate
uv tool install .
Usage
- Run the program (see above). 2) Move the mouse to your target. 3) Press
sto start; presssagain to pause. Use+/-to change speed and]/[to change hold time. Usemto switch engines when needed. PressCtrl+Alt+Kanytime to lock/unlock local hotkeys (safety). Exit withCtrl+C.
Hotkeys
s— start/pause+/-— faster / slower]/[— increase / decrease hold timem— toggle engine (pynput→quartz→pyautogui)c— single test clickj— toggle jitterd— toggle debug logsCtrl+Alt+K— global lock/unlock local keys
Status line
The app renders one continuously updated status line with fixed-width fields and a spinner while clicking.
Example:
▶ | delay: 0.50s | rng: 0.25–0.75 | hold: 0.10s | meth: QTZ | jitter: - | debug: - | lock: no | clicks: 000042 | last: 0.18s | next: 0.43s | cps: 3.5 | fb:1 | method quartz
Key fields:
delaybase delay; actual delays are randomized withinrng(0.5×–1.5×)holdbutton press duration (“pressure”)methengine:QTZ(Quartz),PNP(pynput),PGA(pyautogui)lockyeswhen local keys are locked (onlyCtrl+Alt+Kworks)fb:Nfallback count when switching engines was required
Notes: colors when TTY; ephemeral messages fade after ~2.5s; no extra newlines.
macOS permissions
Grant permissions to your terminal app (Terminal/iTerm/VS Code):
- System Settings → Privacy & Security → Accessibility → add your terminal
- System Settings → Privacy & Security → Input Monitoring → add your terminal
- Restart the terminal
Quartz clicks need the Quartz module (PyObjC). If unavailable, Clickmate automatically uses pynput.
Troubleshooting
- Keys don’t work or clicks are blocked: re-check Accessibility and Input Monitoring permissions.
- App ignores clicks: press
mto switch engines (preferquartzon macOS), enable jitterj, or increase hold time]to ~0.02–0.05s. - Output looks noisy: run in a normal terminal to get the single-line status.
CI/CD and releases
- CI (
.github/workflows/ci.yml):uv sync,ruff, andpyteston Python 3.11–3.13. - Release (
.github/workflows/release.yml): pushing a tag likev1.2.3triggers a build (uv build --no-sources) and publish via PyPI Trusted Publishing (OIDC). The package version is derived from the tag and injected during the build. TestPyPI publishing is not used.
Contributing and community
- See
CONTRIBUTING.mdfor development and PR guidelines. - See
CODE_OF_CONDUCT.mdfor community expectations. - Security: see
SECURITY.md.
License
MIT — see LICENSE.
Dependencies
pyautogui— automationpynput— input handling and alternative click path- Optional:
pyobjc(providesQuartz) — enables Quartz engine on macOS
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clickmate-0.1.1rc3.tar.gz.
File metadata
- Download URL: clickmate-0.1.1rc3.tar.gz
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.8.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
529515821d539f03d32605fe08299bdbc3e1b6672ddd9cf115eda8e62388cb50
|
|
| MD5 |
e9d407bd868d257da3d1573e24986d99
|
|
| BLAKE2b-256 |
3aaa638afc20164560973827ffc077439b9c286b976116524bdd6298fa31ae36
|
File details
Details for the file clickmate-0.1.1rc3-py3-none-any.whl.
File metadata
- Download URL: clickmate-0.1.1rc3-py3-none-any.whl
- Upload date:
- Size: 10.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.8.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
793163aa26bc780c297517f5f79abd52cfc39d6ebfae9e1b916e7861c81363ca
|
|
| MD5 |
8a3887b8257584ce0972f5943bbdbd33
|
|
| BLAKE2b-256 |
90f47126e2a4864d0b72f5d5fb6e8fb04276704ebebb5629b69a5e24cd95d7b1
|