
Show HN: UnnaturalScrollWheels – Better scroll wheel settings for macOS - aptgetrekt
https://github.com/ther0n/UnnaturalScrollWheels
======
marblessubtext
Disabling acceleration is a big feature here, again something that makes sense
on a trackpad but does not on a scroll wheel. It's infuriating switching
between Linux/Windows/macOS _with the same mouse_ and only macOS has
acceleration. Logitech Options doesn't even give acceleration

Also along these lines of bizarre defaults, I don't remember how but I had to
change key press settings to allow for repeated presses. Apparently the
default behavior is to give you accent character options. Then from there I
had to change the interval/initial timings to be closer to Linux/Windows as
well. Of course now I'm paying the price with the dreaded repeat inputs on
this keyboard

~~~
Wowfunhappy
> Disabling acceleration is a big feature here, again something that makes
> sense on a trackpad but does not on a scroll wheel.

Ah, but it makes sense on _Apple_ scroll wheels! I think that's why they never
added a built-in option to disable it.

Nowadays the Magic Mouse doesn't even have a physical scroll wheel, but even
on the Mighty Mouse, the scroll wheel was a little ball that could roll in any
direction and didn't have notches, so acceleration made sense.

Acceleration + notches are what do not go together.

~~~
aptgetrekt
I think the magic mouse is treated like a trackpad under the hood so all the
gestures work. If someone with a magic mouse tried to uncheck the natural
scrolling box under mouse they'd be confused as to why it didn't change so
that could be why the two settings are "linked".

~~~
grishka
Also there's this app called MagicPrefs that allows you to bind things to
gestures, including rebinding the system ones. I use it to bind three-finger
click as middle click and at this point I can't fathom not having it. It
supports all kinds of Apple trackpads _and_ the magic mouse. This implies that
all touch gestures, regardless of the shape of the device, share most of the
underlying code.

------
muli_d
Thank you. I've been using Scroll Reverser[1], but it hasn't been updated to
fully support Catalina (it works, but the installation process was not updated
to request the permissions in Catalina). I'll check out UnnaturalScrollWheels
to see if it's a good replacement.

[1]
[https://pilotmoon.com/scrollreverser/](https://pilotmoon.com/scrollreverser/)

~~~
servercobra
As far as I could tell Scroll Reverse reversed all scrolling, so when I walked
away from my desk, I'd have to kill it to use my trackpad normally.

~~~
aeyes
There is a separate option to reverse scrolling of the trackpad, works
flawless here.

------
Wowfunhappy
I miss when apps like this were built as preference panes.

An app that does nothing but change an OS setting—and whose user interface
exists purely to adjust those settings—does not belong in my applications
folder, and certainly not in my menu bar. Such apps ought to live in System
Preferences, alongside other, well, system preferences. And what do you know,
Apple built a way for third party developers to do just that!

Preference panes used to be the norm, but that seems to have changed over the
last decade. It pains me to admit that an app is probably the right approach
nowadays, because when everyone else is doing things one way, users will
expect you to do that too.

One more way that OS X's UI metaphors have regressed...

~~~
toyg
I agree but I think the issue here is complexity. This app is built with
Swift, probably because most developers prefer high-level languages like that
over system-level languages like ObjectiveC. Unfortunately, OS vendors
typically don’t provide interfaces for high-level languages in their OS
machinery unless strictly necessary. Can you actually write a Preferences
panel in Swift? I wouldn’t be surprised if the answer were “nope, Obj-C only”.

It’s not even an Apple thing, Windows has been the same for a very long time -
remember how browser extensions “exploded” when Mozilla made it possible to
write them in JS? IE forced you to C++, dramatically restricting the number of
developers.

~~~
rgovostes
I wouldn't characterize Swift as "high-level" and Objective-C as "system-
level." One of Swift's stated design goals is to work at all levels of the
technology stack, including system programming where you need a lot of control
over struct layouts and so on.

I'd agree that most of the focus has been on app development, but I just found
this toy kernel written in Swift the other day:
[http://si.org/projects/project1/](http://si.org/projects/project1/)

On the Objective-C side, sure you have access to all of the low level stuff of
C, but Objective-C's message passing is probably a poor choice for very low-
level system programming (in the kernel, for example). Apple uses C and C++ in
the xnu kernel.

Swift was also designed to interoperate with C and Objective-C APIs, so you
could certainly write a preference pane in it. It even automatically generates
Swiftier interfaces for APIs that follow conventions. Here's the
NSPreferencePane API:
[https://developer.apple.com/documentation/preferencepanes/ns...](https://developer.apple.com/documentation/preferencepanes/nspreferencepane)

------
dpcx
As someone who prefers Natural Scroll (and who understands that there are
people who don't), why would someone want Natural Scroll on one interaction
method and _not_ on another? That feels like confusion waiting to happen,
IMHO.

~~~
dashwav
I have been looking for a solution to this problem for a very long time and my
reasoning is that on a trackpad, natural makes a lot of sense intuitively,
since you are "pushing" the document (page/app/whatever) the direction you
want it to move.

Whereas when I am using a mouse I feel like I the document is below the mouse
more or less and when I move the scrollwheel it is physically moving the
document as if it was tied to the scrollwheel.

Not sure if that makes any sense, as this is just some internal feelings on
it, but I have beeen manually toggling the natural scroll when i plug and
unplug my mouse ever since I started using MacOs

~~~
aptgetrekt
Yeah I think the exact same way! The top of the physical wheel spins the
opposite direction of the bottom of the wheel which would be "touching" the
page/content. Originally I was going to just make a background script to
automatically toggle the option when it detects certain USB devices (like my
mouse) but I couldn't find a way to apply settings changed via the "defaults
write" command without logging out and then back in. In my research I came
across discrete-scroll and scroll reverser on GitHub. Discrete-scroll worked
in Catalina but had no GUI, and Scroll Reverser didn't work reliably on
Catalina. So I combined the ideas from both in as little Swift code as
possible so that anyone using my app wouldn't need to worry about allowing the
app to "control your computer".

~~~
dashwav
I have to say I really appreciate this! I was going down very similar lines
just last week (I had installed Hammerspoon and was experimenting with some
applescript hacks, but to no avail).

Just intercepting the actual scroll and inverting it is a really elegant
solution (that doesn't require a relog) which is great.

This solves one of the two biggest gripes I had about MacOs - with the other
being my inablility to "pin" my dock to one of my monitors, overriding the
swap functionality. Thanks!

------
jedberg
Since HN users tend to be more traditional in how they expect their computers
to act, I wonder, how many people turn off "natural" scrolling the second they
get a new Mac?

I never understood why it was there. It makes a ton of sense for content to
scroll in the direction your finger moves _when your finger is touching the
content_ , but I fail to understand why you'd expect it to move that way when
using a touchpad or a mouse.

Was this done specifically for users who were coming to Mac from iPad?

~~~
pottertheotter
I agree. I find "natural" to be very unnatural, and it seems to be everywhere
now. It drives me nuts when I help my wife with something on her laptop.
When/how did this become the norm, because it seems like it was not at one
time?

I suppose most computer users don't consider settings at all and just go with
whatever the default is and eventually get comfortable using that, not knowing
it's not "normal". But who made the change so that this became the new normal
setting?

~~~
netsharc
It was Apple who decided down was up one day. Nowadays on Windows with
Synaptics trackpads, we have the same problem (well for me it is, as you say,
you prefer it).

It made sense because it relates to PgUp/PgDn or to consider that you're
pulling the scrollbar indicator down. (oh, what's that, this UI element is
hidden nowadays..?).

------
behnamoh
I like natural scroll so much I even use AutoHotkey on Windows to emulate the
same behavior. Unfortunately, it reverses everything, so, say, volume scroll
is reversed too. I'm sure there are workarounds about that.

Unlike some comments here, when I move from TrackPad to mouse, I still think
of the scroll wheel as the document, so natural scroll makes more sense for
me, personally.

The only thing I would get rid of in TrackPad is the "bounce effect" when you
reach the Home/End of the document. Also, many documents are perfectly fit in
the app window (e.g. Preview) but still the horizontal scroll moves them
around, which is annoying (try opening a new PDF in Preview and use left/right
arrow keys to move to next page; it scrolls the document horizontally
slightly!)

~~~
aptgetrekt
You can actually change the scroll direction of a mouse in Windows with a
registry edit: [https://answers.microsoft.com/en-
us/windows/forum/windows_10...](https://answers.microsoft.com/en-
us/windows/forum/windows_10-other_settings/reverse-the-scroll-of-
mouse/334669c3-8a45-4600-830a-8df628d7415e)

~~~
behnamoh
Thank you, yes I tried that and it works.

------
Kimitri
Logitech Options has an option to set the scroll direction. As I switch
between a trackpad and a Logitech mouse the scroll direction is always set to
whichever feels ”expected” to the pointing device I’m using. It was a joyous
day to discover the setting in Logitech Options. :)

------
w0mbat
I've used wheel mice on the Mac from the time the Microsoft USB wheel mouse
came out, back when there was a Mac driver that controlled classic Mac apps by
looking for scroll bars and sending events, licensed from an Italian
developer.

I myself added native wheel support to some major Carbon apps, and convinced
other engineers to do it, as I was at Microsoft MacBU at the time.

But anyway, when Apple decided that scroll wheels should work the other way
around, I gave it a try. I soon acclimatized to it and never had to change the
default again. I would recommend all Mac users try out the "natural" setting
and see if you get used to it.

Now explain why I HAVE to invert the y-axis in Halo on XBOX (any version of
either). I tried but I can not adjust to the default.

~~~
haecceity
I invert the y motion of my mouse too.

------
drinkcocacola
"Moving the camera" vs "Dragging the document"

Many years ago, when I was teachin my mother how to use the computer, I
noticed something that I recalled the day Apple introduced the "Natural"
Scroll thing.

She was working on a Word document, so I told her that she didn't need to
click the scroll bar, but to scroll directly using the mouse wheel. To my
surprise, she moved the wheel in the "wrong" direction. And for some seconds
she was wondering why the whole thing was "inverted". In that moment I thought
that probably we were all taught "incorrectly", and maybe, just maybe,
"intuitively" people will think about scrolling on the opposite way, but we
ended up learning that it was not correct, adapting our minds to the already
established behavior of the mouse wheel.

The truth is. I embraced with happiness the "Natural" scrolling from Apple
with the touchpad and the magic mouse on macOS, but also had a hard time
getting used to this behavior with a regular mouse. I've been struggling since
then, and I still use the "classic" scrolling with my Windows-based PC.

------
mruszczyk
Once I gave up on Scroll Revserser, I found Mos[1] as another option for this
need. It just got a new v3 release and allows for toggleable smooth scrolling,
as well as very granular scrolling options on top of the scroll reversing. I'm
a big fan.

[1][https://mos.caldis.me/](https://mos.caldis.me/)

------
saagarjha
I used to use something like this for my mouse, but started using a trackpad
full-time so I didn’t need it anymore. Recently I’ve started using a mouse
again, but without something like this installed, and now I feel like I like
natural scrolling for mice too :/ Must be something you get used to.

~~~
aptgetrekt
I could probably get used to it if I used only macOS, but I use Linux and
Windows most of the time and switching scroll directions when I use macOS gets
frustrating. That and physical scroll wheels scrolling "unnaturally" is what
seems natural to me, @dashwav explains why I feel that way quite well in their
reply to another comment.

------
rootbear
On my Dell XPS running Ubuntu, I have the touch pad set to "natural" scrolling
but I also use a mouse and have that set to traditional scrolling. I find I
like this combination a lot, so being able to set up my Mac the same way would
be great.

As for why I like them to be different, I think it's all about the tactile
experience. I find using the trackpad to be very much like using a touch
screen on a phone. In both cases, it's as if I'm manipulating the screen
content directly with my finger. With the scroll wheel, it's a different
tactile experience and the traditional behavior seems more "correct". Someone
could do a nice human factors study on this.

~~~
Wowfunhappy
> As for why I like them to be different, I think it's all about the tactile
> experience. I find using the trackpad to be very much like using a touch
> screen on a phone.

My personal experience is that after years of keeping the "natural" scroll
setting enabled, my scroll wheel has gained some of that tactile feeling in my
brain. It's like the wheel is the content, and I'm pushing it up and down with
my finger.

However, it definitely took longer for this to happen than with a TrackPad.

~~~
rootbear
Interesting observation. I've never taken the time to try to retrain myself to
use a mouse in natural mode. This is in part due to the fact that I am a Linux
system administrator and I am often working on systems that aren't mine. I
think it would be very confusing if the mouse on my Linux workstation worked
one way and everyone else's worked differently.

------
rsweeney21
This is awesome! Thank you so much for making this!

Every day I have to relearn how to scroll when I switch back and forth from my
Mac and Windows machines. It frustrated me that the scrolling direction of two
completely different input mechanisms were tied together.

Thanks again!

------
henryaj
Thank you thank you thank you. Was literally looking for something like this
earlier today!

------
exabrial
Why this was this change ever touted as "innovative"?

~~~
mikestew
Do you have a URL where this is touted as "innovative", since you used quote
marks? Because I believe it was introduced as a way to be consistent with iOS
and how users scroll using that OS. No one was filing patents on this one,
however.

~~~
nicky0
Quite right. It wasn't really touted as anything. It just showed up in OS X
10.7 in 2010.

~~~
saagarjha
Nit: Lion was released in 2011, it was just presented in 2010.

------
etoulas
I’m a happy user of ControlPlane since many years for exactly this purpose.

> With ControlPlane you can intelligently reconfigure your Mac or perform any
> number of actions based on input from a wide variety of evidence sources […]

[https://github.com/dustinrue/ControlPlane](https://github.com/dustinrue/ControlPlane)

------
frickenhamster
My solution was SteerMouse. It allows me to individually set every scroll
option and mouse speed and acceleration

~~~
baxuz
I also use Steermouse so that I can actually bind the back/forward keys to
CMD+[ / CMD+], while also disabling regular pointer acceleration alongside the
scroll issues.

I also don't think it runs as an accessibility service, but as a low-level
driver.

Downside is that it's not free.

------
bitfroster
Thank you for the app!

I've created PR for brew cask, as I wanted to be able to add it to my
dotfiles.

[https://github.com/Homebrew/homebrew-
cask/pull/86697](https://github.com/Homebrew/homebrew-cask/pull/86697)

------
flaxton
I would never use this - it makes sense for the trackpad and mouse to work in
the “natural” direction, just like on an iPhone and iPad screen. When I use
Windows on a real PC then it confuses me, but that is rare I do that. So this
makes no sense to me, but hey, whatever floats your boat ;-)

------
cletus
So I like Mac hardware and to this day for reasons I cannot fathom, I still
consider the Macbook trackpad to be the only usable incarnation of this
technology I've ever seen. This goes beyond hardware too as it seems like
integration into the OS is a key factor. Touch pads still feel kludgy on
Windows and Linux (to me at least). Even on Mac hardware.

But there are certain UX fails by Apple I cannot comprehend and this is one of
them.

I remember when this changed. It was years ago now. Apple decided the previous
way of doing things was unnatural and just reversed it. If you want it the
"unnatural" way you could use a setting. But the inability to split how the
trackpad worked and how a scroll wheel worked is nothing short of
pigheadedness ("no, it's the users who are wrong" to paraphrase Principal
Skkinner).

Sadly this isn't an isolated example.

The earlier iPads had an orientation lock physical switch on them. I love this
feature. And then Apple decided this was "inconsistent" with the iPhone (which
had no such switch) and removed it. I mean the switch was obviously still
there but now it did something completely useless. I think it muted the iPad
instead? If you wanted this you could just hold down the volume down button.
Then they briefly added back the option of getting the old behaviour but that
only lasted briefly before that option and ultimately the switch were entirely
gone. I used the orientation lock all the time and I'm still dark about it.

Another: a Bluetooth keyboard or trackpad connected to the laptop by USB will
automatically pair. Great feature. Compare this to the Bose headphones I have,
which are a total nightmare as soon as you pair to more than one device to the
point where I've installed homebrew packages and scripts to disconnect
Bluetooth when I close the lid of my Macbook (who decided it was a good
default to pair to a Macbook with the lid closed vs one with its lid open? I
mean does anyone even use pairing to a closed Macbook?). The problem? There's
a popup I need to dismiss saying "This trakcpad is now wirelessly connected to
your computer". Great. I don't care. I don't ever want to see this message
again. Is there an option for that? No!

I find full screen mode for apps great. I often have it set up so my IDE is
one screen and I can swipe left and right between my main desktop and my IDE.
The problem? If your mouse gets near the top of the screen a menu bar appears,
often obscuring the top of your IDE so you have to walk this fine line between
getting high enough on the screen but not _too_ high.

I have a 32" 4K monitor. I'm fine with the menu being visible all the time to
avoid this. Really. Why don't I have that option?

Years ago Chrome actually worked like that. Then it mysteriously disappeared.
When I worked at Google I asked about this and was told something like it was
considered a "bug" and it violated Apple's UI guidelines or something similar.
So now we have the dumb version.

Yet another: if you have multiple monitors, one of them is the "main" display.
It has the dock. If you hit the bottom of the screen on a different monitor
the dock will move. You can't turn this "feature" off. The best you can do is
put the dock somewhere else. I don't want the dock somewhere else.

What's really troubling about the last two is they really ignore the basic
tenets of HCI in that the corners and edges of the screen are the easiest
places to hit. Microsoft famously ignored this years ago when on Windows 9x
the Start button was offset by a couple of pixels from the corner for no good
reasons. No doubt some designer's opinionated sense of aesthetics.

So, rant aside, thanks for making this utility. I know there have been other
solutions to this as well. Part of me still hopes Apple sees reason and
reverses their dumb decisions here.

------
totetsu
The difference in scrolling is quite jarring when first using MacOS after
being familiar with other environments. I imagine many people googling how to
fix it, only to find Apple called their way "natural scrolling" just to add
insult to injury.

[Don't you people have better things to downvote?]

------
slowwriter
Thank you! I needed this so much!

Honestly can’t believe this is not default behavior in macOS.

------
agentdrtran
Disabling scroll acceleration is a godsend.

------
dmalvarado
God bless you. This has filled me with rage since lockdown. Can’t wait to try
it tomorrow.

