Bug 409847 - Enhancement: Accessibility - Add optional On-Demand two-finger scrolling for touchpads
Summary: Enhancement: Accessibility - Add optional On-Demand two-finger scrolling for ...
Status: RESOLVED UPSTREAM
Alias: None
Product: kde
Classification: I don't know
Component: general (show other bugs)
Version: unspecified
Platform: Ubuntu Linux
: NOR wishlist
Target Milestone: ---
Assignee: Unassigned bugs mailing-list
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-07-16 04:48 UTC by Joe
Modified: 2019-07-17 10:25 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Touchpad settings (164.40 KB, image/png)
2019-07-17 01:12 UTC, Joe
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Joe 2019-07-16 04:48:18 UTC
SUMMARY
Add a touchpad configuration option that only enables touchpad two-finger scrolling when a modifier key is being pressed. This should not impact other touchpad functionality - just two-finger scrolling.

I have described this in detail, including why I need it here:
https://forum.kde.org/viewtopic.php?f=216&t=155524

Thus option would dramatically improve my user experience. The current problem occurs several times every hour and disrupts my work flow.

OBSERVED RESULT
Unintentional touchpad scrolling occurs frequently which is very frustrating

EXPECTED RESULT
Touchpad continues to work normally, but only scrolls when I explicitly want it to (by holding down a fixed or configurable modifier key such as Alt, Ctrl, or Super. and using two-finger scrolling)

SOFTWARE/OS VERSIONS Any, but I currently use kubuntu 18.04.
Windows: 
macOS: 
Linux/KDE Plasma: 
(available in About System)
KDE Plasma Version: 
KDE Frameworks Version: 
Qt Version: 

ADDITIONAL INFORMATION

I have two partially numb fingers on my right hand and I don't feel them touching the touchpad until it's too late and my screen goes careening off to multiple other desktops or window positions I did not want.

Two-finger scrolling is a great feature. I do not want to eliminate it. I just want to eliminate unintentional scrolling.

Other relevant issues (not duplicates):
391551
369426

Since System Settings already has options for configuring two-finger scrolling, some of the infrastructure required for this feature is already implemented.
Comment 1 Nate Graham 2019-07-16 14:54:15 UTC
Can you provide a screenshot of the way your touchpad settings page looks so I can get an idea of whether you're using the Synaptics or Libinput drivers?
Comment 2 Joe 2019-07-17 01:12:26 UTC
Created attachment 121567 [details]
Touchpad settings

bigbird@sananda:~$ cat ./.config/touchpadrc
[parameters]
AccelFactor=0
CircScrollDelta=6
Coasting=false
CoastingSpeed=16
HorizScrollDelta=6.8
HorizTwoFingerScroll=true
MaxSpeed=17.084548950195312
MaxTapMove=3.6
MinSpeed=2.02480149269104
PressureMotionMaxZ=173
PressureMotionMinZ=59
RBCornerButton=NoButton
RTCornerButton=NoButton
Tapping=false
ThreeFingerTapButton=LeftButton
TwoFingerTapButton=LeftButton
VertEdgeScroll=false
VertScrollDelta=3.7000000000000006
bigbird@sananda:~$ 

bigbird@sananda:~$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                  id=11   [slave  pointer  (2)]
⎜   ↳ Mouseemu virtual mouse                    id=14   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=9    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=10   [slave  keyboard (3)]
    ↳ Toshiba input device                      id=12   [slave  keyboard (3)]
    ↳ Mouseemu virtual keyboard                 id=13   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=15   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=16   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=17   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=18   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=19   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=20   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=21   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=22   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=23   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=24   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=25   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=26   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=27   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=28   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=29   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=30   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=31   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=32   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=33   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=34   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=35   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=36   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=37   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=38   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=39   [slave  keyboard (3)]
bigbird@sananda:~$
Comment 3 Joe 2019-07-17 01:16:14 UTC
Additional info:
bigbird@sananda:~$ cat ./.config/touchpadrc
[parameters]
AccelFactor=0
CircScrollDelta=6
Coasting=false
CoastingSpeed=16
HorizScrollDelta=6.8
HorizTwoFingerScroll=true
MaxSpeed=17.084548950195312
MaxTapMove=3.6
MinSpeed=2.02480149269104
PressureMotionMaxZ=173
PressureMotionMinZ=59
RBCornerButton=NoButton
RTCornerButton=NoButton
Tapping=false
ThreeFingerTapButton=LeftButton
TwoFingerTapButton=LeftButton
VertEdgeScroll=false
VertScrollDelta=3.7000000000000006
bigbird@sananda:~$ 


bigbird@sananda:~$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                  id=11   [slave  pointer  (2)]
⎜   ↳ Mouseemu virtual mouse                    id=14   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=9    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=10   [slave  keyboard (3)]
    ↳ Toshiba input device                      id=12   [slave  keyboard (3)]
    ↳ Mouseemu virtual keyboard                 id=13   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=15   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=16   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=17   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=18   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=19   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=20   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=21   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=22   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=23   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=24   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=25   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=26   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=27   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=28   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=29   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=30   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=31   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=32   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=33   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=34   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=35   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=36   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=37   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=38   [slave  keyboard (3)]
    ↳ TOSHIBA Web Camera - HD: TOSHIB           id=39   [slave  keyboard (3)]
bigbird@sananda:~$
Comment 4 Nate Graham 2019-07-17 01:59:43 UTC
Okay, so you're using the Synaptics driver.

I have bad news for you: The issue of unintentional two-finger scrolling is unfortunately irresolvable with that driver. :( I spent months and months researching it and applying patches and came to the conclusion that it was a lost cause. So did the developers of the Synaptics driver, in fact, because they created a new driver called Libinput that, among other things, was specifically designed to address this issue. I've been following its development closely and I'm happy to report that for me at least, it's finally fixed with this patchset: https://gitlab.freedesktop.org/libinput/libinput/merge_requests/247

Neither the Synaptics nor Libinput drivers readily support your request, so I'm afraid your only option is to give Libinput a whirl and file bugs if it doesn't behave how you want. The developer Peter Hutterer is quite pleasant and responsive.
Comment 5 Joe 2019-07-17 10:25:09 UTC
Thank you for your efforts and the quick response.

I will take a look at the other driver and see if I can figure out how to install it and then pursue the issue there.