Distributing classic Mac applications from PowerPC Mac to Apple Silicon, bringing retro Mac experiences to modern systems. Why throw away a Mac that still works? True sustainability is using what we have.
A menu-bar background app for legacy PowerPC Macs (iBook, PowerBook, etc.) whose trackpads don't support two-finger scrolling. Hold the ⌘ (Command) key and move the trackpad up or down, and the screen scrolls — no Dock icon, just a small "TP" item in the menu bar.
PPC Trackpad Scroll.app anywhere you like (e.g. the Applications folder).The app links only against standard OS frameworks, so moving the folder around doesn't break it — it's safe to run straight out of the zip.
Language follows the Mac's system language automatically — there's no in-app switch. Any language other than Japanese falls back to English.
Gecko-based browsers like Aquafox treat ⌘+wheel as page zoom. If you're remapping a key (e.g. the right
Enter key) to ⌘ with something like DoubleCommand,
a normal scroll can get misread as a zoom. Fix it by opening about:config in Aquafox's address
bar and setting mousewheel.with_meta.action (and mousewheel.with_control.action if
needed) to 0.
A personal hobby project provided with no warranty. MIT license — see the GitHub repository above for full source and license files.
Uses CGEventTapCreate to watch system-wide kCGEventFlagsChanged /
kCGEventMouseMoved events. While ⌘ is held, kCGEventMouseMoved events are
intercepted: the cursor move is cancelled and a synthetic scroll-wheel event is posted instead. Only
button-up movement is watched, so click-drags and tap-lock drags (e.g. ⌘+dragging a file) are delivered
as a different event type and never touched. The synthetic scroll event has its modifier flags explicitly
cleared, so it doesn't collide with the common "⌘+scroll = zoom" convention (see the Aquafox note above
for the one exception).
CGEventCreate/CGEventPost synchronously inside the tap
callback itself. Moving the trackpad quickly on real PowerPC hardware fired that callback often enough that
the WindowServer round-trip backed up and froze the whole system. The fix: the callback now only accumulates
scroll distance, and a 50 Hz (0.02s) timer does the actual CGEventPost in a batch, keeping
the tap callback itself as light as possible.
Full source code is on GitHub.
Bug reports and requests go straight to the developer, privately — a personal project, so replies aren't guaranteed.