Reverse the direction of scrolling on macOS.
Objective-C Shell HTML
Permalink
Failed to load latest commit information.
BuildScripts Update build scripts to my latest versions Sep 25, 2014
Graphics update 16x16 and 32x32 icons with tweaked versions for small display … Dec 18, 2014
ScrollReverser.xcodeproj incorporate Norwegian translation May 11, 2017
Sparkle.framework Update Sparkle.framework to newer version Sep 25, 2014
resources Added Norwegian translation May 11, 2017
.gitignore updated gitignore for sl Sep 9, 2011
AppDelegate.h Simplify user default management to try to get closer to the "prefs r… May 11, 2017
AppDelegate.m Simplify user default management to try to get closer to the "prefs r… May 11, 2017
Application.h Modify standard source file header. Nov 15, 2016
Application.m Modify standard source file header. Nov 15, 2016
DebugWindow.xib tap is stopped and started on waking from sleep May 25, 2015
DebugWindowController.h Modify standard source file header. Nov 15, 2016
DebugWindowController.m Modify standard source file header. Nov 15, 2016
LICENSE Project licensed under Apache License 2.0. Closes #28. Nov 15, 2016
LinkView.h Modify standard source file header. Nov 15, 2016
LinkView.m Modify standard source file header. Nov 15, 2016
Logger.h Modify standard source file header. Nov 15, 2016
Logger.m Modify standard source file header. Nov 15, 2016
LoggerScrollView.h Modify standard source file header. Nov 15, 2016
LoggerScrollView.m Modify standard source file header. Nov 15, 2016
LoginItemsController.h Modify standard source file header. Nov 15, 2016
LoginItemsController.m Modify standard source file header. Nov 15, 2016
MainMenu.xib tweak main menu bindings May 22, 2015
MouseTap.h Simplify user default management to try to get closer to the "prefs r… May 11, 2017
MouseTap.m Simplify user default management to try to get closer to the "prefs r… May 11, 2017
PrefsWindow.xib Automatic changes to prefs window XIB file after opening in latest Xcode May 11, 2017
PrefsWindowController.h Modify standard source file header. Nov 15, 2016
PrefsWindowController.m Automatic changes to prefs window XIB file after opening in latest Xcode May 11, 2017
README.md Update README.md Apr 30, 2017
ReleaseNotes.md incorporate Norwegian translation May 11, 2017
ScrollReverser-Info.plist Apply Xcode 8's suggested build settings updates Nov 7, 2016
ScrollReverser.sdef add AppleScript support for turning Scroll Reverser on and off Dec 9, 2014
Scroll_Inverter_Prefix.pch Project licensed under Apache License 2.0. Closes #28. Nov 15, 2016
StatusItemController.h Simplify user default management to try to get closer to the "prefs r… May 11, 2017
StatusItemController.m Simplify user default management to try to get closer to the "prefs r… May 11, 2017
TapLogger.h Modify standard source file header. Nov 15, 2016
TapLogger.m Modify standard source file header. Nov 15, 2016
TestWindow.xib add test window May 21, 2015
TestWindowController.h Modify standard source file header. Nov 15, 2016
TestWindowController.m Modify standard source file header. Nov 15, 2016
WelcomeWindow.xib Rename project files from ScrollInverter to ScrollReverser Dec 9, 2014
WelcomeWindowController.h Modify standard source file header. Nov 15, 2016
WelcomeWindowController.m Modify standard source file header. Nov 15, 2016
main.m Modify standard source file header. Nov 15, 2016

README.md

Scroll Reverser

Reverse the direction of scrolling on macOS.

Home page: http://pilotmoon.com/scrollreverser/

License

Licensed under Apache License 2.0.

Notes on the code

The 'master' branch build targets 10.7 and higher.

Older code targeting 10.4+ is in the 'tiger' branch.

The real guts of the code is in MouseTap.m. Everything else is just user interface rigging.

Scroll Reverser installs an event tap, which gives access to event stream, including scrolling events and gesture events. The main documentation is Quartz Event Services Reference.

To distinguish between trackpad and mouse, Scroll Reverser essentially looks at the gesture events to determine whether there are 2 or more fingers on the trackpad. If so, it assumes it is the trackpad. If not, mouse. It's a little more complicated than that as you will see, but that is the general idea.