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.
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.
-
Where your fingers are
Every touch, drawn live on the device at its sensor’s real proportions.
-
What the device sends
The raw button reports from the hardware, before macOS has done anything with them.
-
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.
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.
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.
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.
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.
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.
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.
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.
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 that uses every input. Clicks rotate, scrolling drops, and it counts any clicks that go missing while you play.
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 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/Logson 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.
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:
xcode-select --install
Then clone, build and open it. build.sh installs the app to ~/Applications.
git clone https://github.com/gofastercloud/RodentGym.git
cd RodentGym
./build.sh
open ~/Applications/RodentGym.app
More build options
./build.sh --no-install | Build only, into ./build |
|---|---|
./build.sh --screenshot | Regenerate 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
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.