Bug 369426

Summary: Desktop switch scroll is too fast with touchpad scrolling
Product: [Plasma] plasmashell Reporter: Salvo "LtWorf" Tomaselli <tiposchi>
Component: Desktop ContainmentAssignee: Marco Martin <notmart>
Status: CONFIRMED ---    
Severity: normal CC: bhush94, bugseforuns, josephj, nate, plasma-bugs, RaitaroHikami, torokati44
Priority: NOR Keywords: usability
Version: 5.7.4   
Target Milestone: 1.0   
Platform: Other   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=419867
Latest Commit: Version Fixed In:

Description Salvo "LtWorf" Tomaselli 2016-09-27 14:20:24 UTC
I am using a laptop, I normally scrol with 2 fingers on the touchpad, however changing desktop with this is rather difficult because it is not very precise, and I can't do 1 scroll-click thing.

So I'd like to see a timeout of a few milliseconds that disables scrolling before activating it again, so that I could switch to a certain desktop rather than play roulette.

Reproducible: Always
Comment 1 Joe 2019-07-16 03:16:48 UTC
This is almost identical to #391551. This needs some work. It's an accessibility issue as well as an an annoyance. I often end up unintentionally scrolling desktops when I'm just trying to move the mouse cursor from the panel to a window on the desktop I just selected.
Comment 2 Nate Graham 2021-03-10 19:17:26 UTC
*** Bug 391551 has been marked as a duplicate of this bug. ***
Comment 3 Joe 2021-03-10 19:36:08 UTC
I'd really appreciate some movement on this issue. It is a major source of frustration with an otherwise pretty great UI/UX.
Comment 4 Nate Graham 2021-03-10 20:55:10 UTC
Is it actually working at all for you? Touchpad scroll-on-the-desktop-to-switch-virtual-desktops has just been totally broken since 5.19; see Bug 419867. Or is that the issue you're experiencing?
Comment 5 Salvo "LtWorf" Tomaselli 2021-03-11 05:59:36 UTC
It works for me on 5.20, what can I say…

However i'd appreciate if it did it more slowly so I didn't have to finely calibrate my fingers to trigger 1 and only 1 "scroll event"
Comment 6 Nate Graham 2021-03-11 23:23:56 UTC
I bet this bug has the same root cause as Bug 419867. Let me see if I can figure it out.
Comment 7 Joe 2021-03-12 00:40:39 UTC
(In reply to Nate Graham from comment #6)
> I bet this bug has the same root cause as Bug 419867. Let me see if I can
> figure it out.

Seems like it might be related. However, I don't have any screen edge actions enabled and I don't even know how scroll wheel emulation works on a touchpad, but I certainly don't use it on purpose.

For reference, I'm on kubuntu 18.04, KDE Frameworks 5.47.0 Qt 5.9.5 (built against 5.9.5), planning to upgrade to 20.04 sometime soon.

My root issue is that I have two semi-numb fingers, so I frequently accidentally get two-fingered touchpad actions without feeling it.

I asked elsewhere about getting an optional enhancement such that touchpad scrolling would be disabled unless I was holding down a key such as Ctrl, but that didn't go anywhere. I don't want to disable it completely.
Comment 8 Nate Graham 2021-03-12 04:02:37 UTC
Looking into this, there is no feasible way to make just the virtual desktop switching scroll action require a bigger touchpad scroll before activating. We could make all desktop touchpad scroll actions require a bigger touchpad scroll before triggering, however.
Comment 9 Joe 2021-03-12 04:07:07 UTC
(In reply to Nate Graham from comment #8)
> Looking into this, there is no feasible way to make just the virtual desktop
> switching scroll action require a bigger touchpad scroll before activating.
> We could make all desktop touchpad scroll actions require a bigger touchpad
> scroll before triggering, however.

That might work, but it would probably have to be user configurable because there's no way one setting will make everyone happy.
Comment 10 Nate Graham 2021-03-12 04:30:49 UTC
I'm starting to wonder if this is fixable.

In plasma-framework/src/scriptengines/qml/plasmoid/containmentinterface.cpp, we accumulate scroll angle deltas from QWheelEvent::angleDelta(), under the assumption that 120 is one scroll click, at which point the "I did a scroll" event fired. This works fine for mouse wheels, but for a touchpad, it results in a very small finger movement producing one scroll event. Ideally we would want for a larger finger movement to be required. A value between 240 and 360 produces a better result for my touchpad, but makes it unusably slow for mouse wheels. We need a way to distinguish between when the event comes from a mouse wheel and when it comes from a touchpad. 	QWheelEvent::pixelDelta() is supposedly used for this, but it always produces 0, and the Qt documentation says that it's unreliable on X11 and should not be used. :/

Not sure how to proceed.
Comment 11 Nate Graham 2021-03-12 04:55:21 UTC
I guess we could implement a handler for pixelDelta() and it would work for Wayland users.
Comment 12 Joe 2021-03-12 06:55:07 UTC
If you make it user configurable, then you don't need to know mouse vs. touchpad. It could be in a config file because any particular user is probably going to adjust it once and forget it - so it doesn't have to be GUI or dynamically updated the moment it changes. (Those would be nice, but probably not worth the effort.)
Comment 13 Nate Graham 2021-03-12 14:24:46 UTC
Unfortunately making it user-configurable does not help; what if the user is using a laptop and has a touchpad but also has a mouse plugged in and switches between both depending on which one is closer to their hand? That's how I often work. we need the ability to distinguish between input devices programmatically, not push the burden onto the user.