Overview
Scroll Reverser is a minimalist, rock-solid open-source macOS utility providing independent scrolling polarity for mice, trackpads, tablets, and Universal Control. Operating silently from the menu bar via a CoreGraphics Quartz Event Tap, Scroll Reverser restores classic wheel scrolling to external mice while leaving Apple trackpads set to Natural Scrolling.
How It Works
Scroll Reverser operates through structured, deterministic execution stages:
Quartz Event Tap Interception: Hooks into the CoreGraphics event stream to inspect and rewrite scroll delta payloads at the system level.
Per-Device Scroll Polarity: Separately applies Classic wheel polarity to external USB/Bluetooth mice while preserving Natural Scrolling on built-in trackpads.
Continuous vs Discrete Discrimination: Evaluates HIDScrollAccelerationType to differentiate touch-surface trackpads from physical scroll wheels automatically.
Independent Horizontal & Vertical Controls: Configures horizontal scroll reversal and app-specific overrides granularly in a compact menu bar popover.
Key Technical Features & Capabilities
Per-Device Scroll Direction Control: Applies independent scroll reversal settings to external mice, built-in trackpads, and third-party touch surfaces.
Discrete Wheel vs Trackpad Distinction: Queries HIDScrollAccelerationType to tell discrete stepped scroll wheels apart from smooth multi-touch gestures automatically.
Universal Control & App Overrides: Configures separate scrolling policies for connected remote Macs/iPads or specific desktop applications.
Tiny Menu Bar Footprint: Pure Objective-C application using minimal RAM and CPU overhead with optional horizontal-axis reversal.
Architecture & Technology Stack
Primary Languages: Objective-C, Cocoa
System Frameworks: Quartz Event Services (CGEventTap), CoreGraphics, AppKit, Sparkle
Build System: Xcode (ScrollReverser.xcodeproj)
Supported Platforms: macOS 11.0+ (Universal Binary)
System Requirements
| Specification | Minimum Requirement | Recommended Specification |
|---|
| Operating System | macOS 11.0+ (Universal Apple Silicon & Intel) | Latest stable release build |
| Processor Architecture | 4-Core x86_64 or Apple Silicon M1 | 8-Core Apple Silicon / Core i7+ |
| Memory (RAM) | 4 GB Unified Memory | 16 GB+ High-Speed RAM |
| Disk Space | 1 GB free SSD storage | 5 GB+ free SSD storage |
Installation & Setup Guide
macOS Installation
1Download ScrollReverser-2.1.1.zip from CookApps or install via Homebrew: brew install --cask scroll-reverser.
2Move Scroll Reverser.app into /Applications and grant Accessibility permission.
Building from Source
git clone --recursive https://github.com/pilotmoon/Scroll-Reverser.git
cd Scroll-Reverser
open ScrollReverser.xcodeproj
How to Use & Workflow
1Launch & Authorize: Start Scroll Reverser and approve Accessibility permission so the event tap can read HID scroll events.
2Choose Device Polarity: Keep macOS System Settings set to Natural Scrolling, then toggle Reverse Mouse or open detailed per-device rows.
3Customize Axes: Adjust vertical, horizontal, and tablet axes cleanly inside Preferences.
Troubleshooting & Common Issues
Issue: Scroll direction fails to invert in specific apps.
*Cause*: Secure Input mode (active inside password prompts) or revoked Accessibility access prevents event taps from observing inputs.
*Resolution*: Ensure Scroll Reverser.app is ticked inside System Settings › Privacy & Security › Accessibility.