A simple macOS app that allows you to configure different scroll directions for trackpad and mouse wheel independently.
- Independent scroll direction control: Configure trackpad and mouse wheel scroll directions separately
- Menu bar integration: Easy access via system menu bar
- Persistent settings: Your preferences are saved automatically
- macOS Sequoia 15.5 compatible: Built for modern macOS versions
- Trackpad: Natural scroll direction (enabled by default)
- Mouse Wheel: Reverse of natural scroll direction (disabled by default)
This means trackpad scrolling works as expected with natural scroll, while mouse wheel scrolling works in the opposite direction.
-
Build and install:
./build.sh ./install.sh
-
Grant accessibility permissions when prompted (required for scroll event monitoring)
The app will now start automatically at login!
-
Build the app:
./build.sh
-
Run the app:
./build/ScrollControl
-
Grant accessibility permissions when prompted (required for scroll event monitoring)
To set up automatic startup at login:
./install.shThis will:
- Install the app to
~/Applications/ScrollControl - Create a LaunchAgent to start the app automatically
- Configure logging to
~/Library/Logs/ScrollControl.log
- Start:
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.scrollcontrol.app.plist - Stop:
launchctl bootout gui/$(id -u)/com.scrollcontrol.app - Restart:
launchctl kickstart -k gui/$(id -u)/com.scrollcontrol.app - View logs:
tail -f ~/Library/Logs/ScrollControl.log
To completely remove the app:
./uninstall.sh- Once running, you'll see a scroll control icon in your menu bar
- Click the icon to open the settings panel
- Configure your preferred scroll directions:
- Trackpad Natural Scroll: Enable for natural trackpad scrolling
- Mouse Wheel Natural Scroll: Enable for natural mouse wheel scrolling
- Changes apply immediately
- Use the "Quit ScrollControl" button at the bottom of the settings panel to close the application
The app uses:
- Core Graphics Event Taps to intercept scroll events
- IOKit to differentiate between trackpad and mouse wheel input
- Cocoa for the user interface
- UserDefaults for persistent settings storage
This app requires Accessibility permissions to monitor and modify scroll events system-wide. You'll be prompted to grant these permissions when first running the app.
Requirements:
- macOS 12.0 or later
- Xcode Command Line Tools
- Swift 5.9 or later
# Build using Swift Package Manager
swift build -c release
# Or use the build script
./build.sh# Build for development
swift build
# Build for release
swift build -c release
# Run directly (development)
swift run
# Run tests (if any)
swift testThe compiled app will be available at:
- Development:
.build/debug/ScrollControl - Release:
.build/release/ScrollControl(also copied to./build/ScrollControl)