Skip to content

Releases: Malik1942/CalmMouse

CalmMouse 0.4.0

Choose a tag to compare

@Malik1942 Malik1942 released this 24 Aug 16:38

Getting set up is now a guided walk instead of a wall of switches.

What's new since 0.3.0

  • Presets. Three one-click starting points — Just fix clicking (only the headline fix), Extra steady (nudges ignored, straight-line scrolling, no coasting), and Trackpad feel (tap to click and tap-and-drag). A preset sets the Scrolling and Clicking options in one go and everything stays tweakable afterwards; the "in use" badge simply drops away once you change something. You can save your own setups as named presets too. Per-app rules and shortcuts are never touched by a preset.
  • A welcome tour on first launch. Five short steps: what CalmMouse actually fixes, the Accessibility permission (it notices the moment you grant it), picking a preset, and a live try-it step that counts the accidental scrolls it just calmed for you. Re-run it any time from Settings → General → Show Welcome Tour…

Install

Download CalmMouse.zip, unzip, and drag CalmMouse.app to /Applications. This build isn't notarized yet, so on first launch: right-click the app → OpenOpen. Then enable it under System Settings → Privacy & Security → Accessibility.

Updating from 0.3.0? macOS ties the Accessibility grant to the app's signature, so re-grant it once after replacing the app — Settings → General → Reset grant… if the toggle looks on but nothing works.

CalmMouse 0.3.0

Choose a tag to compare

@Malik1942 Malik1942 released this 24 Aug 11:04

The first release under the CalmMouse name (formerly Godmouse).

What's new since 0.2.0

  • Renamed to CalmMouse. Your settings migrate automatically from a previous Godmouse install. macOS treats the renamed app as new, so re-grant Accessibility once after updating (Settings → General → Reset grant… if the toggle looks on but nothing works).
  • Settings rewritten in plain English, with a little animated preview when you hover any setting, and a new app icon.
  • The "scrolling stops working" family of bugs is fixed. Taps and drags no longer leave scrolling blocked afterwards; a scroll that starts while blocking is active resumes the moment it should; a real scrolling burst cancels a drag instead of fighting it; and windows dragged with tap-and-drag now move in real time instead of jumping at release. CalmMouse --status now reports the scroll blocker's live state so future reports name their own culprit.
  • Official website: https://calmmouse.malikzhang.com

Install

Download CalmMouse.zip, unzip, and drag CalmMouse.app to /Applications. This build isn't notarized yet, so on first launch: right-click the app → OpenOpen. Then enable it under System Settings → Privacy & Security → Accessibility.

Godmouse 0.2.0

Choose a tag to compare

@Malik1942 Malik1942 released this 20 Aug 11:10

Gestures on the Magic Mouse surface: tap to click, tap and drag, two-finger drag, and a tap zone that keeps the fingers gripping the mouse from clicking.

Everything here is off by default — turn on what you want in Settings → Clicking. The scroll fixes from 0.1.0 are unchanged.

New

  • Tap to click — a light single-finger tap left-clicks, no press needed. One Firm↔Light slider tunes it. Taps are rejected automatically while (and shortly after) scrolling, during and right after physical clicks, for multi-finger contacts, resting fingers, and grazes. Double- and triple-taps become real double-/triple-clicks.
  • Tap zone — restrict taps to the front of the surface, away from the side edges, so the fingers holding the mouse can't click. Adjustable depth.
  • Tap and drag — tap, touch again and hold, then move the mouse to drag; lift to drop. The button press is deferred until you actually start moving, so a finger that just comes back to rest, or swipes to scroll, presses nothing at all. A quick second tap is still a double-click, so double-click-drag works in text.
  • Two-finger drag (long press) — rest two fingers together and hold; after a moment the button presses down. Fingers that land one after the other are grip, not gesture, and never trigger it.

Under the hood

Raw touches come from the private MultitouchSupport framework through a dlopen bridge, so the app still builds with plain swift build and degrades gracefully (minus the tap features) if a macOS release drops it. Everything is gated on the Magic Mouse specifically — trackpads and other mice are untouched.

Three things the long-standing open-source lore about that framework gets wrong on macOS 26, all found by capturing raw frames from real hardware:

  • MTDeviceIsOpaqueSurface returns false for the Magic Mouse, so devices are matched by family ID instead.
  • Touch state 4 is not "touching" — a light tap lives in state 2 and only flashes 3→4→5 as it lifts.
  • The array returned by MTDeviceCreateList owns the device handles; releasing it after registering callbacks silently kills frame delivery.

Godmouse --status now reports the whole tap pipeline — frames received, taps and drags posted, and for every rejected tap the gate that rejected it plus where it landed.

Install

Download Godmouse.zip, unzip, drag Godmouse.app to /Applications, then:

xattr -dr com.apple.quarantine /Applications/Godmouse.app
open /Applications/Godmouse.app

Or right-click the app → Open. The build is unsigned (no paid Apple Developer membership behind this project); if you'd rather not run an unsigned binary, ./install.sh builds from source in about two minutes.

Then grant System Settings → Privacy & Security → Accessibility → Godmouse.

Updating from 0.1.0: macOS ties the Accessibility grant to the app's signature, so an unsigned update looks like a different app while the toggle still reads ON. If Godmouse says it has no permission, use Settings → General → Reset grant… (or tccutil reset Accessibility com.godmouse.app) and grant it again.

Requires macOS 13 or later. Developed and tested on macOS 26 with a Magic Mouse 2.

Godmouse 0.1.0

Choose a tag to compare

@Malik1942 Malik1942 released this 19 Aug 07:08

First public release.

The Magic Mouse's top shell stays touch-sensitive while you click, so every click is also a tiny swipe — the page jumps, dragged windows scroll out from under you, links move as you aim at them. macOS has no setting for it. Godmouse is that setting, plus the rest of the Magic Mouse's rough edges.

What's in it

  • Block scroll while clicked — scrolling is swallowed while a Magic Mouse button is held, with an adjustable grace period after release to catch the trailing scroll your finger makes coming off the shell
  • Dead zone — ignore micro-jitter from a finger resting on the shell
  • Axis lock — once a scroll commits to one axis, kill drift on the other
  • Momentum toggle — drop the coasting tail, for the Magic Mouse only
  • Per-app rules — different behaviour per application (no scrolling in Figma, no horizontal in Excel, …)
  • Modifier actions — ⌘/⌥/⌃/⇧ + scroll → horizontal, invert, zoom, or nothing
  • Battery warning — a nudge before the mouse dies

Only the Magic Mouse is affected; trackpads and other mice pass through untouched.

Install

Download Godmouse.zip, unzip, drag Godmouse.app to /Applications, then:

xattr -dr com.apple.quarantine /Applications/Godmouse.app
open /Applications/Godmouse.app

This build is unsigned (no paid Apple Developer membership behind the project), which is what the xattr line is for — or right-click the app → Open. If you'd rather not run an unsigned binary, build from source with ./install.sh; it's a two-minute build.

Then grant System Settings → Privacy & Security → Accessibility → Godmouse. The app starts working within two seconds, no relaunch.

Updating

Because the release is unsigned, macOS sees each new version as a different app and quietly stops honouring your existing Accessibility grant. If the toggle looks ON but Godmouse says it has no permission, use Settings → General → Reset grant…, or run tccutil reset Accessibility com.godmouse.app.

Requires macOS 13 or later. Tested on macOS 26 with a Magic Mouse 2.