Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

🖱️ Cursed Cursor

A small, just-for-fun Windows tool that randomizes your mouse pointer — its appearance, size, and speed — using the native Win32 cursor APIs. Run it for a laugh, prank a friend, or crank it up to wild mode, where the explicit goal is to make clicking anything genuinely hard.

Cursed Cursor in action — cursors changing shape, size, and speed
Wild mode is running while I try to play the mouse-accuracy game at mouseaccuracy.com (a third-party site, not affiliated with this project) — hitting the target becomes hard.

⚠️ Changes are system-wide. Always restore when you're done (a sign-out or reboot also resets the system cursors). See Safety.

Requirements

  • Windows 10 or 11
  • Windows PowerShell 5.1 (built in) or PowerShell 7+
  • No admin rights, no dependencies — it's a single script

Install

Quick install (one line, no setup)

irm https://raw.githubusercontent.com/r000bin/cursed-cursor/main/install.ps1 | iex

This installs the latest stable release to %LOCALAPPDATA%\Programs\CursedCursor, verifies the download against its published SHA256 checksum, and puts a cursed-cursor command on your PATH (per-user, no admin). Then:

cursed-cursor wild        # maximum chaos
cursed-cursor restore     # put your pointer back

Pin or choose a version. By default the installer pins the latest stable tag. To install a specific version (or the bleeding-edge main), invoke it as a scriptblock and pass -Ref:

# a specific release
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/r000bin/cursed-cursor/main/install.ps1))) -Ref v1.0.0

# latest from main
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/r000bin/cursed-cursor/main/install.ps1))) -Ref main

Prefer to read before you run? Inspect it first, then execute:

$s = irm https://raw.githubusercontent.com/r000bin/cursed-cursor/main/install.ps1
$s            # review it
$s | iex      # run it

You can also verify the script by hand against CursedCursor.ps1.sha256:

(Get-FileHash .\CursedCursor.ps1 -Algorithm SHA256).Hash   # compare to the .sha256 file

Uninstall any time:

& ([scriptblock]::Create((irm https://raw.githubusercontent.com/r000bin/cursed-cursor/main/install.ps1))) -Uninstall

Or just clone and run

Don't want to install? Clone the repo and double-click one of the .cmd launchers:

File What it does
Wild.cmd One-shot randomize (cursors + size + speed), then exits
RunWild.cmd Continuous chaos every 5 s; Ctrl+C stops & restores
WildMode.cmd Wild mode — extreme size/speed, aims to be unclickable
Restore.cmd Puts your normal pointer back

Or run it from a PowerShell window:

powershell -ExecutionPolicy Bypass -File .\CursedCursor.ps1 randomize
powershell -ExecutionPolicy Bypass -File .\CursedCursor.ps1 restore

(Tip: run Set-ExecutionPolicy -Scope CurrentUser RemoteSigned once and you can drop the -ExecutionPolicy Bypass.)

Modes

randomize   Pick random cursors + size + speed, apply, and exit (persists).
restore     Put your real cursors and speed back.
run         Loop forever, re-randomizing on an interval; restores on Ctrl+C.
wild        Like 'run', but cranked — bimodal size + bimodal speed on a random
            interval, with the explicit aim of making it hard to click.
set         Apply an explicit cursor file and/or speed/size (for testing).

Examples

# Gentle continuous fun, re-rolling every 8 seconds
.\CursedCursor.ps1 run -IntervalSeconds 8

# Maximum havoc
.\CursedCursor.ps1 wild

# Only change the look, leave speed and size alone
.\CursedCursor.ps1 randomize -SkipSpeed -SkipSize

# A specific giant cursor, no speed change
.\CursedCursor.ps1 set -Cursor C:\Windows\Cursors\dinosaur.ani -Size 200 -SkipSpeed

What "wild" does

  • Bimodal size — each cursor is either a tiny speck (8–28 px) or a screen-hogging monster (320–512 px), nothing in between.
  • Bimodal speed — the pointer lurches between super-sluggish (1–2) and super-flighty (19–20).
  • Random interval — everything reshuffles on a random 0.5–3 s timer, so you can never settle into a rhythm.

Safety

SetSystemCursor replaces the system cursors globally and persistently, so:

  • The run/wild loops restore your pointer automatically on Ctrl+C (use the keyboard to stop — in wild mode clicking is the whole problem!).
  • One-shot randomize persists until you run restore (or sign out / reboot).
  • Your original pointer speed is saved to %LOCALAPPDATA%\cursed-cursor-state.json so restore can recover it. Cursor appearance and size are restored by reloading the system scheme.

How it works

All via P/Invoke into user32.dll:

  • LoadImage loads each .cur/.ani from C:\Windows\Cursors at a chosen pixel size (this is what gives true size control).
  • SetSystemCursor assigns it to each system cursor slot (arrow, hand, busy, I-beam, resize handles, …).
  • SystemParametersInfo gets/sets pointer speed (SPI_*MOUSESPEED) and reloads the real cursors on restore (SPI_SETCURSORS).

Tuning

The randomization ranges are constants at the top of CursedCursor.ps1:

$MinCursorSize / $MaxCursorSize          # 'run' mode size range
$TinySize* / $HugeSize*                  # 'wild' bimodal size bands
$SluggishMin/Max, $FlightyMin/Max        # 'wild' bimodal speed bands
$WildIntervalMinSec / $WildIntervalMaxSec # 'wild' random interval

License

MIT — see LICENSE.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages