Skip to main content

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 (pynputquartzpyautogui)
  • Single test click with c
  • Optional jitter movement j and debug logs d
  • 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

  1. Run the program (see above). 2) Move the mouse to your target. 3) Press s to start; press s again to pause. Use +/- to change speed and ]/[ to change hold time. Use m to switch engines when needed. Press Ctrl+Alt+K anytime to lock/unlock local hotkeys (safety). Exit with Ctrl+C.

Hotkeys

  • s — start/pause
  • + / - — faster / slower
  • ] / [ — increase / decrease hold time
  • m — toggle engine (pynputquartzpyautogui)
  • c — single test click
  • j — toggle jitter
  • d — toggle debug logs
  • Ctrl+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:

  • delay base delay; actual delays are randomized within rng (0.5×–1.5×)
  • hold button press duration (“pressure”)
  • meth engine: QTZ (Quartz), PNP (pynput), PGA (pyautogui)
  • lock yes when local keys are locked (only Ctrl+Alt+K works)
  • fb:N fallback 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):

  1. System Settings → Privacy & Security → Accessibility → add your terminal
  2. System Settings → Privacy & Security → Input Monitoring → add your terminal
  3. 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 m to switch engines (prefer quartz on macOS), enable jitter j, 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, and pytest on Python 3.11–3.13.
  • Release (.github/workflows/release.yml): pushing a tag like v1.2.3 triggers 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.md for development and PR guidelines.
  • See CODE_OF_CONDUCT.md for community expectations.
  • Security: see SECURITY.md.

License

MIT — see LICENSE.

Dependencies

  • pyautogui — automation
  • pynput — input handling and alternative click path
  • Optional: pyobjc (provides Quartz) — enables Quartz engine on macOS

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clickmate-0.1.2.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

clickmate-0.1.2-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file clickmate-0.1.2.tar.gz.

File metadata

  • Download URL: clickmate-0.1.2.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for clickmate-0.1.2.tar.gz
Algorithm Hash digest
SHA256 86180c3217a07848b5dd599543a8af5bda98714357a0950d80e835edd6f6be54
MD5 2da8f5800c6613c6e78a621bbcea3453
BLAKE2b-256 1343bd8a0587706b6800108e83780fea0d09f86927f6616b2e3859e2e8f92c14

See more details on using hashes here.

File details

Details for the file clickmate-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: clickmate-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 10.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for clickmate-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1987088bfdf69a865112cf5378ddcf555cd75c55c9b2cc615daf466396b1eb20
MD5 ae9bbc2f85a587ba6cdb7a801ac02ade
BLAKE2b-256 74aae766853d2fc2bb65b825c0e1633c5dea1a415983cdee9581bea9b4297e3d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page