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 fix build warning regarding Info.plist in copy phase Nov 12, 2016
Sparkle.framework Update Sparkle.framework to newer version Sep 25, 2014
resources Complete the integration of Dutch strings into the project. Closes #35. Nov 12, 2016
.gitignore updated gitignore for sl Sep 9, 2011
AppDelegate.h Modify standard source file header. Nov 15, 2016
AppDelegate.m Modify standard source file header. Nov 15, 2016
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 Modify standard source file header. Nov 15, 2016
MouseTap.m Modify standard source file header. Nov 15, 2016
NSObject+ObservePrefs.h Modify standard source file header. Nov 15, 2016
NSObject+ObservePrefs.m Modify standard source file header. Nov 15, 2016
PrefsWindow.xib remove spurious layout constraint that was causing console warnings o… Dec 18, 2014
PrefsWindowController.h Modify standard source file header. Nov 15, 2016
PrefsWindowController.m Modify standard source file header. Nov 15, 2016
README.md formatting of survey link in README Nov 16, 2016
ReleaseNotes.md Partial update relnotes Nov 12, 2016
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 Modify standard source file header. Nov 15, 2016
StatusItemController.m Modify standard source file header. Nov 15, 2016
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

>>> PLEASE FILL IN THE Scroll Reverser Survey! <<<

Reverse the direction of scrolling on macOS.

The 'master' branch build targets 10.7 and higher.

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

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

Licensed under Apache License 2.0.

Notes on the code

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.