RodentGym

See what your Magic Mouse and Magic Trackpad send, and what your Mac actually does with it.

A small, free, open-source diagnostic app for macOS.

For macOS 14 Sonoma or later. MIT licence.

RodentGym's main window. A Magic Mouse card shows a touch on the right-hand side of the split, a Magic Trackpad card shows two fingers with trails, and the log underneath lists clicks, including one dropped right-click in red.
Why it exists

Mouse trouble is hard to fix when you can’t see it.

Right-click that does nothing. Clicks that vanish now and then. A trackpad that feels a bit off. You click again, it works, and you start to wonder if you imagined it.

RodentGym shows each step between your finger and your apps. When the steps don’t agree, it tells you, logs it, and helps you work out whether the problem is the mouse, the wireless link or the Mac.

  1. Where your fingers are

    Every touch, drawn live on the device at its sensor’s real proportions.

  2. What the device sends

    The raw button reports from the hardware, before macOS has done anything with them.

  3. What macOS delivers

    The click events that actually reach your apps, a moment later.

Dropped. The device reported a click and macOS never delivered it.

Remapped. The click arrived, but as the wrong button.

It started as a way to find out why one Magic Mouse’s right-click kept disappearing. The answer turned out to be a setting that resets itself, and the app kept growing from there.

The main window

Watch every touch, and catch the clicks that go missing.

Live touches and clicks

Each device is drawn in its own colour with your fingers on it in real time. Trails follow each finger and every click ripples out from where it happened. The secondary-click area is shaded from your actual settings.

The settings really in effect

Model, firmware, colour, battery and charging, and the settings each device’s driver is applying right now. They come from the driver rather than System Settings, and the two don’t always agree.

A log with timestamps

Dropped and remapped clicks are flagged as they happen and written to ~/Library/Logs/RodentGym.log. Clicks that go through include their latency.

Detail of a Magic Mouse card: a touch in the orange secondary area, Sends Right lit, and one dropped right-click counted in red.
Detail of the log: normal clicks with their latency, a setting change in orange, and a dropped right-click in red.
The log. A setting that changed is in orange; a click macOS never delivered is in red.
Magic Mouse split

Move the line between left and right click.

On a Magic Mouse, the right-click area starts 55% of the way across. System Settings doesn’t let you change that. RodentGym does: drag the dashed line on the mouse in the main window, or use the slider in Settings.

The new split applies straight away and is saved, so it survives reconnecting and restarting. Reset to 55% puts Apple’s default back.

This is the one place RodentGym changes anything, and only when you move it. It’s also one of the newest parts of the app, so if it behaves oddly for you, please open an issue.

RodentGym Settings, with the Magic Mouse split slider at 55% and a Reset to 55% button, plus Bluetooth, dropped-click and device colour options.
Latency Monitor

Three graphs on one timeline.

Click latency, touch report rate and Bluetooth signal over the last two minutes, with dropped clicks, connects and disconnects marked across all three. When something goes wrong, you can see what else was happening at that moment.

It records from the moment RodentGym starts, so recent history is already there when you open it. Bluetooth signal is opt-in: RodentGym only asks for Bluetooth permission if you turn it on.

The Latency Monitor: click latency dots, touch report rate lines with stall markers, and Bluetooth signal, all on a two-minute timeline with a dropped click marked in red.
Hardware Self-Test

Check the device itself.

Three short tests for faults in the hardware. Surface Coverage finds dead zones as you wipe a finger across the sensor. Phantom Touch catches a sensor reporting contact when nobody is touching it. Haptics plays three taps through a Force Touch trackpad’s haptic engine.

Copy Report puts every result, with each device’s model, firmware and serial number, on the clipboard as plain text, ready for a support case.

The Hardware Self-Test partway through Surface Coverage on a Magic Trackpad, with most of the grid green and Phantom Touch and Haptics already passed.
Keyboard Tester

Every key, once.

Press each key and it lights up. The tester also catches what a worn keyboard does: keys that chatter, so one press arrives as two, keys that stick, and how many keys it can report at once.

Every Magic Keyboard since 2015, the aluminium Apple Wireless Keyboard and MacBook keyboards are drawn to scale in ANSI, ISO or JIS, with labels from your own input source. It only reads keys pressed in its own window, so it needs no permission and sees nothing else you type.

Each Apple keyboard also gets a tile in the main window, with its model, firmware, connection, layout, and battery and charging status. A MacBook’s own keyboard follows the lid, just like its trackpad.

The Keyboard Tester: a Magic Keyboard with Touch ID drawn to scale, most keys green, shift and G held in blue, with progress, rollover and the last key below.
The gym

Put your hands to work.

Intermittent problems are hard to reproduce on demand. These give you a reason to use every input, quickly and often, while RodentGym keeps watch.

The Gesture Trainer with a checklist of trackpad gestures, most ticked, and a banner reading Squeeze with thumb and fingers.

Gesture Trainer

A checklist of the gestures you have switched on. Do each one and it’s ticked off, including system gestures like Mission Control.

The Force Sensor graph, showing left and right presses rising through the Touch, Click and Force Click bands.

Force Sensor

A live graph of how hard you press on a Force Touch trackpad, through click and Force Click.

Cheese Stack, a falling-block game made of cheese pieces, with left and right click counts and Dropped clicks 0.

Cheese Stack

A falling-block game that uses every input. Clicks rotate, scrolling drops, and it counts any clicks that go missing while you play.

Built-in help

Answers without leaving the app.

Searchable, with a page for each tool and the usual problems and their fixes. Press ⌘? in RodentGym to open it.

The same guide is on this site too.

RodentGym Help, with a sidebar of topics and the Latency Monitor page open.
Privacy

RodentGym only listens.

It never blocks, changes or creates input, and nothing it sees leaves your Mac.

  • Not your typingIt never opens a keyboard. The Keyboard Tester sees keys only in its own window, and never logs them.
  • No networkRodentGym makes no network connections at all.
  • No Accessibility permissionIt doesn’t need it, because it only listens.
  • Bluetooth only if you opt inPermission is requested only when you turn on signal monitoring. It reads the signal of devices already connected, and never scans, pairs or connects.
  • A log only you can readIt stays in ~/Library/Logs on your Mac.
  • One setting, when you askThe Magic Mouse split is the only thing it writes, and only when you move it.

Watching click events doesn’t normally need permission. If click events show as unavailable, allow RodentGym under System Settings › Privacy & Security › Input Monitoring. Because a self-built app is signed locally, each rebuild may ask again.

Install

Get RodentGym

Signed downloads and Homebrew are coming soon.

Until then, building it yourself takes about a minute and needs only Apple’s free command line tools. There’s no Xcode project: the app is a handful of Objective-C files, built with clang and signed for local use.

  • macOS 14 Sonoma or later. Developed on macOS 27, with Liquid Glass on macOS 26 and later.
  • Apple’s command line tools. Free, and installed with one command.

If you don’t have the command line tools yet, install them once:

Terminal
xcode-select --install

Then clone, build and open it. build.sh installs the app to ~/Applications.

Terminal
git clone https://github.com/gofastercloud/RodentGym.git
cd RodentGym
./build.sh
open ~/Applications/RodentGym.app
More build options
./build.sh --no-installBuild only, into ./build
./build.sh --screenshotRegenerate the images in docs/images from anonymised demo data

To open straight into a tool:

open ~/Applications/RodentGym.app --args --show-latency --show-selftest --show-trainer --show-game --show-force
Open source

Free, open source, and happy to have help.

RodentGym is MIT-licensed and looked after in spare time. Contributions of every size are welcome: a typo, a better explanation in the help, support for a device model, or a whole new tool.

Contribute

CONTRIBUTING.md explains how the code fits together and how to get a change in. Not sure where to start? Look for issues labelled good first issue, or ask in Discussions. Questions like “is this reading normal?” are welcome there too.

Found a bug? A Self-Test report or a few lines from the log helps a lot.

Support

RodentGym is free and will stay that way. If it saved you an afternoon, or a trip to the Apple Store, you can sponsor its development on GitHub. It’s never expected and always appreciated.

A star, or telling someone who’s fighting their mouse, helps too.