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.dev0.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.dev0-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: clickmate-0.1.2.dev0.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.dev0.tar.gz
Algorithm Hash digest
SHA256 b48cad32a5b3fc91e7e069cd972e5d57713cc229fd6295b1722b743d0f9c1eca
MD5 78d3863f0ba750feb684790833b47139
BLAKE2b-256 10689f100c942588c02be7276c640d7a720f29e96406f1dba2d3162f0a699723

See more details on using hashes here.

File details

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

File metadata

  • Download URL: clickmate-0.1.2.dev0-py3-none-any.whl
  • Upload date:
  • Size: 10.9 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.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 11d15cbe3eb91cddf39df197f87bc3ef4c43a3064f81ee35263939ad15df38ca
MD5 cfe121880d7229fe9b91392d0d8b57a1
BLAKE2b-256 8f732cbd6faeee3aa1854149e62475ad67583be42d7da98502dd1f14cbb283be

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