"Inverse scrolling for normal mice only" seems to affect accessibility apps for scrolling

Describe the bug
Inverse scrolling not only affects mice but also some accessibility apps for scrolling (which probably emit the same thing as mice).


Affected input device (e.g. MacBook Trackpad, Magic Mouse/Trackpad, Touch Bar, etc.):

Normal Mouse


Device information:

  • Type of Mac: MacBook Pro
  • macOS version: Tahoe 26.2
  • BetterTouchTool version: 6.183

Would it be possible to limit this inverse scrolling behavior to physical mice or specific device identifiers?

are you using the reverse scroll direction modifier or the old reverse scroll direction option in the settings ? the modifier allows to only apply to normal mice - however if the accessibility apps pose as normal mouse this might not help. Applying to specific device identifiers is not possible unfortunately

Thanks for the prompt response. I tried both the old option and the modifier, and they behaved the same way.

Unfortunately then you are most likely out of luck. What accessibility tool is it? (Maybe it marks the events somehow so I could filter them).

You could try to check this option, but most likely that won't help either:

Thanks for the pointer.

I use Homerow or KeyboardScroller for scrolling via keyboard, both of which use accessibility features of macOS to implement scrolling.

I’ll report back if I find that the flag you shared helps.

ah, I thought it was some special accessibility tools. These are just using the standard CGEvent APIs. I can probably add an option to ignore events from specific processes.

By the way, you can also easily set up keyboard scrolling with BTT:



Ignoring events from other apps would be beneficial, and it would be helpful to allow users to select which apps to exclude. For example, exclude events from Homerow but not from Mos.

Thank you for the suggestion! I was unaware of the smooth scrolling feature for the keyboard. I experimented with it briefly but could not replicate the behavior of KeyboardScroller or Homerow.

  • With KS, I use Hyper + J to scroll down, and I can hold down Hyper; each time I press J, it scrolls down slightly. With BTT, it seems I must release all keys before scrolling occurs.
  • In Homerow, I can use a shortcut such as Hyper + S to enter scroll mode and then use J/K to scroll down/up, GG to go to the top (especially useful for long documents), SHIFT + G to go to the bottom, etc. Pressing Esc exits the scroll mode. If multiple scrollable elements are present, you can select one using a number, and then scroll within that element.

Anyway, thank you for introducing these cool features in BTT. I’ve been using the Hyper feature for some time now and no longer need to run Karabiner-Elements just to add Hyper/Esc support.

Edit: If I enable “Simulate Trackpad Scrolling” in the Smooth Scroll settings, then I can hold that the modifier and press the other key to scroll. However, if this option is unchecked, I have to release the modifier and the key for the scrolling to work. In the former case, the same key combination scrolls down while in the latter it scrolls up (because I have Inverse scroll setting enabled).

Edit 2: The Smooth Scroll + Simulate Trackpad Scrolling is actually not affected by Mos, which is really nice.

Another pitfall of using multiple applications for smooth scrolling or keyboard scrolling is their potential to interfere with one another. For example, Mos's smooth scrolling causes the scrolling in KS or Homerow to also become smooth, which is great; however, each time I press J or K, it results in excessive scrolling due to Mos’s settings, rendering KS or Homerow ineffective.

Hopefully, we can have all these features in BTT one day and prevent such collisions.

In 6.189 I have added an additional scroll modifier "Ignore Events From Specific Application". You need to provide the app names or bundle identifiers:

For this modifier the position in the list of modifiers is especially relevant. Any modifier that comes before it will still apply, any modifier that comes after it will not apply to events from the specified apps. If you place it at the top of the list like in my screenshots, no other scroll modifier will interact with the events from the specified apps.

Works like a charm!

For future readers, use “Reverse Scroll Direction” instead of “Inverse scrolling …” from the settings.

Edit:
Since applications like Homerow and Keyboard Scroller run in the background, I suspect this scroll modifier doesn't affect them.

This is also explained in the modifier's documentation, which indicates that it only affects the frontmost application.

BTT has introduced many great features recently (I’ve been a long-time user), and I’m hoping we’ll see smooth scrolling and keyboard-based scrolling added in the future so everything can be integrated into one great app. I can submit a few feature requests like this one and this one just to have some of these features under the radar.

I appreciate the "Smooth Scroll" feature mentioned in a previous post. It works exceptionally well, does not interfere with the scrolling behavior of other applications (like Mos does), and remains unaffected by Mos, so scrolling does not become much faster when Mos is open.

The only limitation I have observed so far is that in tmux, users must release all keys, including the modifier, for the scroll function to work, whereas Keyboard Scroller does not require this. I will investigate whether any settings in tmux can be changed to resolve this issue and will share an update if I find something useful.

May I ask what events are emitted by this scrolling feature that makes it unaffected by Mos? Do you happen to know what tmux expects for scrolling events and how they are different from what BTT emits?

What do you mean by "unaffected by Mos"? (I'm not very familiar with Mos)
Unfortunately I also don't know much about tmux, but if necessary you could disable the scroll modifier while tmux is active?