Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scroll Split icon

Scroll Split

Natural scrolling on the trackpad. Classic scrolling on the mouse.


Why

macOS has one "Natural scrolling" setting, and it applies to the trackpad and the mouse together. If you like natural scrolling on a trackpad but classic scrolling on a mouse wheel, macOS cannot do it.

Scroll Split fixes this. Turn Natural scrolling on in System Settings, and Scroll Split reverses only the scroll events that come from a mouse wheel. The trackpad keeps the natural direction, and the mouse gets the classic direction.

It is a tiny background app (about 100 lines of Swift). It has no window, no Dock icon, and no settings.

How it works

Scroll Split uses a Quartz event tap to watch scroll events. A trackpad sends scroll events with a gesture phase or a momentum phase. A mouse wheel sends events with no phase. Scroll Split reverses the events with no phase and passes all other events through unchanged.

Requirements

  • macOS 13 or later
  • Xcode Command Line Tools (xcode-select --install)

Install

  1. Turn on Natural scrolling in System Settings > Trackpad > Scroll & Zoom.
  2. Clone the repo and run the installer:
    git clone https://github.com/EduardsE/scroll-split.git
    cd scroll-split
    ./install.sh
  3. Open System Settings > Privacy & Security > Accessibility and turn on Scroll Split. If it is not in the list, click + and select /Applications/Scroll Split.app.

The installer builds Scroll Split.app, copies it to /Applications, and adds a LaunchAgent so it starts at login. After you give the permission, Scroll Split starts on its own within about 15 seconds.

To open the Accessibility settings directly:

open "x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"

Uninstall

./uninstall.sh

Then remove Scroll Split from System Settings > Privacy & Security > Accessibility.

Test without installing

./build.sh
"build/Scroll Split.app/Contents/MacOS/ScrollSplit" --verbose

--verbose prints mouse or trackpad for each scroll event. When you run it from a terminal, macOS checks the Accessibility permission of the terminal app, not of Scroll Split.

Options:

  • --verbose: print each scroll event.
  • --vertical-only: reverse only vertical scrolling on the mouse, not horizontal scrolling.

Troubleshooting

  • The mouse still scrolls the wrong way. Run the test above. If the mouse shows up as trackpad, your mouse software (for example smooth scrolling in Logi Options+) sends trackpad-like events. Turn that feature off.
  • Nothing changes. Check the log at ~/Library/Logs/ScrollSplit.log. If it says it is waiting for permission, turn on Scroll Split in the Accessibility settings.
  • It stopped after a reinstall. Each build has a new ad-hoc signature, so macOS can drop the permission. Turn it off and on again in the Accessibility settings.
  • Do not run two scroll tools together. If another app also reverses the mouse (Mac Mouse Fix, Mos, LinearMouse, Scroll Reverser), the two reversals cancel out.

Notes

  • A Magic Mouse sends phases like a trackpad, so it keeps the natural direction.
  • Tested with a Logitech MX Vertical and a MacBook trackpad.

License

MIT

About

Natural scrolling on the trackpad, classic scrolling on the mouse. A tiny macOS background app.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages