File: README.md
UnnaturalScrollWheels
Invert scroll direction for physical scroll wheels while maintaining "Natural" scrolling for trackpads on MacOS.
Why? What does it do?
For some reason in macOS, toggling the "Scroll direction: Natural" option in Mouse settings also changes it in Trackpad settings despite being in separate places.
This application makes it so that scroll direction for physical scroll wheels is the opposite of what is shown in settings without messing with the scroll direction of the trackpad.
The issue is described here:
https://apple.stackexchange.com/questions/116617/how-to-separate-mouse-and-trackpad-settings
Unfortunately most/all solutions no longer work reliably if at all in Catalina.
Installation
Using Homebrew
brew install --cask unnaturalscrollwheelsManual download
Download the latest
.dmgfrom the releases page, mount it, and copy the.appto your applications folder and open it like any other application.The app requires accessibility permissions to "Control your computer". This is required to intercept scroll events, invert them and modify their deltas to disable acceleration and apply your settings.
That's it!
Usage
One possible confusion may be how to modify your preferences once you've hidden the app from menu bar. To show preferences and temporarily show the menu bar icon again, simply open the application again which will display the preferences window.
File: UnnaturalScrollWheels/Assets.xcassets/Contents.json
{
"info" : {
"author" : "xcode",
"version" : 1
}
}
File: UnnaturalScrollWheels/Assets.xcassets/AppIcon.appiconset/Contents.json
{
"images" : [
{
"filename" : "16x16.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "16x16"
},
{
"filename" : "32x32-1.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "16x16"
},
{
"filename" : "32x32.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "32x32"
},
{
"filename" : "64x64.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "32x32"
},
{
"filename" : "128x128.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "128x128"
},
{
"filename" : "256x256.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "128x128"
},
{
"filename" : "256x256-1.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "256x256"
},
{
"filename" : "512x512-1.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "256x256"
},
{
"filename" : "512x512.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "512x512"
},
{
"filename" : "1024x1024.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "512x512"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
File: .github/FUNDING.yml
These are supported funding model platforms
github: ther0n
custom: "https://paypal.me/theron1998"
File: .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
name: Build
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- name: Select Xcode
run: sudo xcode-select -s /Applications/Xcode_15.4.app/Contents/Developer
- name: Build (Release, Universal)
run: |
xcodebuild build \
-project UnnaturalScrollWheels.xcodeproj \
-scheme UnnaturalScrollWheels \
-configuration Release \
-destination "generic/platform=macOS" \
ARCHS="x86_64 arm64" \
ONLY_ACTIVE_ARCH=NO \
CODE_SIGN_IDENTITY="-" \
CODE_SIGNING_REQUIRED=NO \
CODE_SIGNING_ALLOWED=NO | xcpretty
- name: Verify universal binary
run: |
APP=$(find ~/Library/Developer/Xcode/DerivedData -name "UnnaturalScrollWheels.app" -path "*/Release/*" | head -1)
echo "App found at: $APP"
file "$APP/Contents/MacOS/UnnaturalScrollWheels"
lipo -info "$APP/Contents/MacOS/UnnaturalScrollWheels"File: .github/workflows/release.yml
[Binary file]