AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Mac의 Magic Mouse·Trackpad 동작을 실시간으로 보여주는 작고 무료인 오픈소스 진단 앱
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.
개발 도구Objective-C · C++GitHub @gofastercloud온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기See what your Magic Mouse and Magic Trackpad send, and what macOS actually delivers. A free, open-source diagnostic app for macOS.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Right-click that does nothing. Clicks that vanish now and then. A trackpad that feels a bit off. These problems are maddening because you can't see where they happen.
RodentGym shows you every step: where your fingers are, what the device reports, and what macOS delivers to your apps. When those don't match, it tells you, logs it, and helps you work out whether the problem is the mouse, the wireless link or the Mac.
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.
Live touches and clicks. Each device is drawn at its sensor's real proportions, 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.
Dropped and remapped clicks. RodentGym compares the button reports from the hardware with the clicks macOS delivers. A click that never arrives is flagged as dropped; one that arrives as the wrong button is flagged as remapped. Both are logged with a timestamp.
The settings that are really in effect. Model, firmware, colour, battery and charging, and the settings each device's driver is applying right now, which aren't always what System Settings shows. Magic Keyboards get a tile too, with battery and charging status.
An adjustable Magic Mouse split. Drag the line between the left and right click areas. System Settings doesn't offer this; it's fixed at 55% unless you change it.
Click latency, touch report rate and Bluetooth signal on one two-minute timeline, with dropped clicks and connects and disconnects marked across all three. When a problem shows up, you can see what else was happening at that moment. Bluetooth signal is opt-in: RodentGym only asks for Bluetooth permission if you turn it on.
Three short checks for faults in the device itself: surface coverage finds dead zones, phantom touch catches a sensor reporting contact when nobody is touching it, and haptics checks a Force Touch trackpad's haptic engine. Copy Report gives you a plain-text summary for a support case.
Press every key once and watch it light up. The tester also catches what a worn keyboard does: keys that chatter (one press arriving 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 reads keys only from its own window, so it needs no permission.
RodentGym runs on macOS 14 Sonoma or later. It's developed on macOS 27 and uses Liquid Glass on macOS 26 and later.
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:
xcode-select --install # once, if you don't have the command line tools
git clone https://github.com/gofastercloud/RodentGym.git
cd RodentGym
./build.sh # builds and installs to ~/Applications
open ~/Applications/RodentGym.app
There's no Xcode project: the app is a handful of Objective-C files, built with clang and signed for local use.
./build.sh --no-install # build only, into ./build
./build.sh --screenshot # regenerate the images in docs/images from anonymised demo data
# Open straight into a tool
open ~/Applications/RodentGym.app --args --show-latency --show-selftest --show-trainer --show-game --show-force
# Draw every keyboard layout to PNGs, to check layout data by eye
build/RodentGym.app/Contents/MacOS/RodentGym --keyboard-layouts /tmp/layouts
RodentGym watches mouse buttons and touches. It never opens a keyboard or watches typing in other apps: the Keyboard Tester only sees keys pressed in its own window, and doesn't log them. It makes no network connections, needs no Accessibility permission, and nothing leaves your Mac. Its log stays in ~/Library/Logs and only you can read it.
It only listens, with one exception: if you move the Magic Mouse split, it saves your new split to the mouse's preferences.
Watching click events doesn't normally need permission. If click events show as unavailable, allow RodentGym under System Settings › Privacy & Security › Input Monitoring. Bluetooth permission is only requested if you turn on signal monitoring. Because a self-built app is signed locally, each rebuild may prompt again.
| What | Where it comes from | What it tells you |
|---|---|---|
| Touches, report rate, stalls | MultitouchSupport.framework (private), every frame | Where fingers are, and how steadily each device reports |
| Button reports | IOHIDManager | What the hardware says was pressed, and when |
| Click events | Listen-only CGEventTap on the login session | What macOS delivered to apps |
| Click latency | HID report timestamp vs event arrival | Time from button report to delivered click |
| Device details | IORegistry (MultitouchPreferences, VersionNumber, ColorID) | Model, firmware, colour, effective settings |
| Battery | Accessory power sources (as pmset -g accps uses) | Level, charging, on cable or battery |
| Gesture settings | Driver preferences, com.apple.dock, global defaults | Which gestures are on |
| Click pressure, haptics | NSEvent pressure, NSHapticFeedbackManager | Force Click and the haptic engine |
| Bluetooth signal (opt-in) | IOBluetoothDevice.rawRSSI | Link quality in dBm |
A button report is matched with the click event that follows it within a configurable window, 400 ms by default. Devices are picked up as they connect and disconnect.
Contributions of every size are welcome: a typo, a better explanation in the help, support for a device model, or a whole new tool. CONTRIBUTING.md explains how the code fits together and how to get a change in.
Not sure where to start? Have a look at issues labelled good first issue, or ask in Discussions. Questions like "is this reading normal?" are welcome there too.
Testers wanted. RodentGym has only been tried on a few devices. Ten minutes with yours and a test report is one of the most useful things you can do, even if everything works. The testing checklist has ideas for what to try.
Found a bug? Open an issue. Reporting a problem has an example of a report that's easy to act on.
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.
MIT. See LICENSE.
RodentGym isn't affiliated with or endorsed by Apple. Magic Mouse, Magic Trackpad, Magic Keyboard, Force Touch, Touch ID and Liquid Glass are trademarks of Apple Inc.