Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ClickPress

Precise Windows autoclicker — real native clicks with configurable interval, press duration, and live timing diagnostics.

ClickPress clicks at the current cursor position using real native Windows mouse events. Every click is a separate mouse-down → short Click Press Duration → mouse-up sequence sent through SendInput (MOUSEEVENTF_LEFT/RIGHT/MIDDLEDOWN/UP), scheduled on a high-resolution monotonic timer with absolute target timestamps so intervals never drift.

Features

  • Real native clicks — each click is a genuine Windows mouse-down/mouse-up via SendInput, not a synthetic message or injected WM_ event.
  • Click Interval — measured from the start of one click (mouse-down) to the next, so intervals stay accurate no matter how long each press is.
  • Click Press Duration — the short time between each mouse-down and its mouse-up, modeling the finite duration of a normal physical click. This is not a click-and-hold feature.
  • Natural Click Timing — optional, bounded per-click variation around your base interval and press duration (see disclaimer below).
  • Global hotkeys — Start/Stop and Emergency Stop work from any app; the Start/Stop hotkey box is a capture box (click it, press a key) and also accepts typed key names. Changes are registered and auto-saved immediately.
  • Live timing diagnostics — separates how often clicks occur (interval) from how long each click is physically held (press duration), with requested vs actual average/min/max, CPS, and jitter.
  • Continuous or Fixed Count modes — run until stopped, or send exactly N clicks.
  • Self-contained — no .NET runtime installation required.

Requirements

  • Windows 10 or 11, x64
  • The download is a self-contained single-file executable — the .NET 8 runtime is bundled, so nothing else needs to be installed.

Quick start

  1. Download ClickPress.exe
  2. Run ClickPress.exe
  3. Move the cursor where you want the clicks
  4. Press F8 (default Start/Stop Hotkey) to start — clicking begins after a short grace period so you can move the cursor away
  5. Press F8 again to stop, or Pause (default Emergency Stop) to stop immediately

Clicks happen at whatever position the cursor is in when each mouse-down fires. If you move the cursor during a run, clicks follow it. An in-flight click always releases its mouse-up, so the button is never left held down.

Settings

Setting Meaning
Mouse Button Which button to click: Left, Right, or Middle.
Click Interval (ms) Time between the start of consecutive clicks, i.e. mouse-down → next mouse-down. E.g. 150 ms with a 35 ms press gives down@0, up@35, down@150, up@185, down@300, up@335, …
Click Press Duration (ms) The short time between each mouse-down and its mouse-up. Must be smaller than the Click Interval.
Click Count Number of clicks to send. Used in Fixed Count mode.
Mode Continuous — clicks until you stop it. Fixed Count — sends exactly Click Count clicks, then stops.
Start/Stop Hotkey Global hotkey that starts and stops clicking (default F8). Click the box and press a key to capture it (single keys only — e.g. F1–F12, Pause, Home, A, 0), or type a key name such as F9. The change is registered and saved to %APPDATA%\ClickPress\settings.json immediately. If the key is already in use by another app, you get a warning and the previous hotkey is kept.
Emergency Stop Global hotkey that stops the loop immediately and cancels all pending clicks (default Pause). Same capture box and instant auto-save behavior as the Start/Stop Hotkey.
Natural Click Timing When enabled, adds small bounded variation to each click's interval and press duration (see below).
Interval Variation (%) ±% bound for the per-click variation of the Click Interval (0–100).
Press Duration Variation (%) ±% bound for the per-click variation of the Click Press Duration (0–100).

All settings — including every hotkey change — are saved automatically to %APPDATA%\ClickPress\settings.json and restored on the next launch. If the file can't be written (read-only location, disk full, etc.), the app simply keeps working with the current values.

Natural Click Timing adds small configurable variation to the timing of individual clicks. It does not emulate a physical mouse device and does not bypass anti-cheat, bot-detection, CAPTCHA, security, or application-specific protections.

Variation is always bounded by the configured percentages — it never uses unbounded randomness, and a varied press duration is clamped so it can never outlive its interval slot.

How it works

  • Native inputWin32InputEngine is the only code that calls SendInput. Each click is exactly one mouse-down (MOUSEEVENTF_*DOWN) followed, after the Click Press Duration, by one mouse-up (MOUSEEVENTF_*UP).
  • Down-to-down scheduling — the scheduler computes absolute monotonic targets (QPC / Stopwatch): targetDown[N] = targetDown[N-1] + interval[N]. Targets are never re-derived from measured deltas, so cumulative drift cannot accumulate.
  • Bounded natural variation — with Natural Click Timing enabled, each click's interval and press duration are drawn from a bounded generator within the configured ±% (never unbounded, never outside the configured limits).
  • Robust press release — the mouse-up target anchors to the actual mouse-down fire time, so a click can never be inverted (up before down) even if the OS delays an event, and stopping always releases the button.
  • High-resolution timing — while running the app raises the Windows timer resolution to 1 ms (timeBeginPeriod(1)) and uses a hybrid wait (coarse Sleep(1) + a short spin for the final ~2 ms), so scheduling is not limited by the default ~15.6 ms timer granularity.
  • Diagnostics definitions — Click Interval is the time between consecutive mouse-down timestamps; Press Duration is the time between each mouse-down timestamp and its corresponding mouse-up timestamp. This separates how often clicks occur from how long each individual click is physically represented.

Windows SmartScreen

Because the executable is not code-signed, Windows SmartScreen may show "Windows protected your PC" the first time you run it. This is normal for new unsigned software. To run:

  • Click More infoRun anyway, or
  • Unblock the file first, e.g. in PowerShell:
powershell -Command "Unblock-File 'path\ClickPress.exe'"

The warning cannot be removed without a code-signing certificate. The "More info → Run anyway" flow is safe for software you trust; if you'd rather not allow it, don't run the app.

Building from source

Prerequisites: .NET 8 SDK. The app targets net8.0-windows (WinForms). Cross-building on Linux works out of the box via EnableWindowsTargeting; on Windows you can build directly.

# Linux (cross-build)
dotnet test tests/ClickPress.Tests/ClickPress.Tests.csproj          # run unit tests
dotnet publish src/ClickPress.App/ClickPress.App.csproj -c Release \
  -r win-x64 --self-contained -p:PublishSingleFile=true \
  -p:IncludeNativeLibrariesForSelfExtract=true                     # single-file exe with native libs embedded
# Windows
dotnet test tests/ClickPress.Tests/ClickPress.Tests.csproj
dotnet publish src/ClickPress.App/ClickPress.App.csproj -c Release -r win-x64 --self-contained -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true

The publish output is a self-contained ClickPress.exe (x64, GUI subsystem) that runs without a .NET installation.

Repository layout:

  • src/ClickPress.Core — pure C# timing logic (scheduler, bounded variation generator, diagnostics, IInputEngine interface). No Win32; fully unit-tested on Linux.
  • src/ClickPress.App — WinForms GUI + the Win32 layer. Win32InputEngine is the only code that P/Invokes SendInput; SettingsStore handles JSON persistence.
  • tests/ClickPress.Tests — xUnit tests for the scheduler, variation generator, and diagnostics.

Note for maintainers: Directory.Build.props in this repo redirects all obj//bin/ output to /opt/clickpress-build (the shared workspace /home volume is small). On your own machine you can delete that file or change ClickPressBuildRoot to any writable location — or remove it entirely and let dotnet use default paths.

Testing

The test suite covers the pure timing logic:

  • Scheduler — down-to-down interval semantics, absolute-target drift behavior, natural-timing bounds, cancel/emergency-stop safety (a sent mouse-down always gets its mouse-up), fixed-count completion.
  • Variation generator — outputs stay within the configured ±% bounds and are centered near the base value.
  • Diagnostics — interval/press-duration separation and stats (avg/min/max/CPS/jitter).

Run with:

dotnet test tests/ClickPress.Tests/ClickPress.Tests.csproj

About

Precise Windows autoclicker — real native SendInput clicks with configurable click interval & press duration, optional natural timing, global hotkeys, and live timing diagnostics.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages