Bug 359460 - Synaptic touchpad wrong settings and limits
Summary: Synaptic touchpad wrong settings and limits
Status: RESOLVED FIXED
Alias: None
Product: systemsettings
Classification: Applications
Component: kcm_touchpad (show other bugs)
Version: 5.17.5
Platform: openSUSE Linux
: NOR normal
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords:
: 360099 360108 (view as bug list)
Depends on:
Blocks:
 
Reported: 2016-02-16 13:17 UTC by Mykola Krachkovsky
Modified: 2020-01-22 21:36 UTC (History)
6 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
Allow large scroll delta (7.17 KB, patch)
2016-03-06 17:15 UTC, Rajeesh K V
Details
Allow large scroll delta (13.75 KB, patch)
2016-03-06 18:00 UTC, Rajeesh K V
Details
Remove redefinition line from subclass (473 bytes, patch)
2016-03-07 12:17 UTC, Mykola Krachkovsky
Details
Synaptic driver fix and max scroll delta change (15.04 KB, patch)
2016-03-07 19:36 UTC, Rajeesh K V
Details
Synaptic driver fix and max scroll delta change (6.88 KB, patch)
2016-03-09 18:25 UTC, Rajeesh K V
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Mykola Krachkovsky 2016-02-16 13:17:40 UTC
On start kcm touchpad sets some wrong setting which leads to scrolling problems.
Default parameters value:
MaxTapMove              = 234
VertScrollDelta         = 106
HorizScrollDelta        = 106
CircScrollDelta         = 0.1
Set on start:
MaxTapMove              = 20
VertScrollDelta         = 10
HorizScrollDelta        = 10
CircScrollDelta         = 6

That parameters leads to very strange touchpad scroll (very big scroll values, hangs of input after using touchpad scroll). I think values MaxTapMove, VertScrollDelta, HorizScrollDelta should be multiplied by some coefficient (10?) of relation between UI units and device one, e.g. when I set VertScrollDelta  = 9.8mm in kcm_touchpad I've got same 10 from synclient. And/or upper limit should be changed. For CircScrollDelta I can't set default 0.1 value.

Reproducible: Always

Steps to Reproduce:
1. Use synaptic touchpad.
2. Start KDE Plasma 5.
3. synclient -l > kde_params.txt
4. Log off/in to other DE/WM (IceWM, LXQt)
5. synclient -l > def_params.txt
6. Compare.

Actual Results:  
UI units (mm) are just written to touchpad settings. Default touchpad values coudn't be set using UI. Plasma 5 touchpad settings leads to input problems (several scrolls make system unresponsible to input).

Expected Results:  
Correct UI mm to device units coversion and/or upper limit correction.

openSUSE Leap 42.1, x86_64, Plasma 5 (RPMs from git using KDE:Unstable:Frameworks).
Comment 1 Christian (Fuchs) 2016-03-04 11:03:33 UTC
Confirmed here on gentoo, seen it since the last plasma update. 
Didn't update or change anything on the synaptics or Xorg side, so quite definitely plasma. 

Plasma 5.5.95, synaptics 1.8.3, Qt 5.5.1
Comment 2 Rajeesh K V 2016-03-05 09:31:02 UTC
Can you post the output of 'xinput list-props <touchpad id>'? touchpad id can be found by running just 'xinput'.
Comment 3 Rajeesh K V 2016-03-05 09:31:38 UTC
*** Bug 360099 has been marked as a duplicate of this bug. ***
Comment 4 Mykola Krachkovsky 2016-03-05 09:40:12 UTC
Wrong touchpad settings:
Device 'SynPS/2 Synaptics TouchPad':
        Device Enabled (142):   1
        Coordinate Transformation Matrix (144): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        Device Accel Profile (274):     1
        Device Accel Constant Deceleration (275):       2.500000
        Device Accel Adaptive Deceleration (276):       1.000000
        Device Accel Velocity Scaling (277):    12.500000
        Synaptics Edges (299):  1766, 5388, 1637, 4463                                                                                                                                                                                   
        Synaptics Finger (300): 25, 30, 0                                                                                                                                                                                                
        Synaptics Tap Time (301):       180                                                                                                                                                                                              
        Synaptics Tap Move (302):       20                                                                                                                                                                                               
        Synaptics Tap Durations (303):  180, 100, 100                                                                                                                                                                                    
        Synaptics ClickPad (304):       0                                                                                                                                                                                                
        Synaptics Middle Button Timeout (305):  75                                                                                                                                                                                       
        Synaptics Two-Finger Pressure (306):    282                                                                                                                                                                                      
        Synaptics Two-Finger Width (307):       7                                                                                                                                                                                        
        Synaptics Scrolling Distance (308):     10, 10                                                                                                                                                                                   
        Synaptics Edge Scrolling (309): 1, 0, 0                                                                                                                                                                                          
        Synaptics Two-Finger Scrolling (310):   1, 0                                                                                                                                                                                     
        Synaptics Move Speed (311):     1.000000, 1.750000, 0.037460, 0.000000                                                                                                                                                           
        Synaptics Button Scrolling (312):       1, 1                                                                                                                                                                                     
        Synaptics Button Scrolling Repeat (313):        1, 1                                                                                                                                                                             
        Synaptics Button Scrolling Time (314):  100                                                                                                                                                                                      
        Synaptics Off (315):    2                                                                                                                                                                                                        
        Synaptics Locked Drags (316):   0                                                                                                                                                                                                
        Synaptics Locked Drags Timeout (317):   5000
        Synaptics Tap Action (318):     0, 0, 0, 0, 1, 2, 3
        Synaptics Click Action (319):   1, 1, 1
        Synaptics Circular Scrolling (320):     0
        Synaptics Circular Scrolling Distance (321):    1.000000
        Synaptics Circular Scrolling Trigger (322):     0
        Synaptics Circular Pad (323):   0
        Synaptics Palm Detection (324): 0
        Synaptics Palm Dimensions (325):        10, 200
        Synaptics Coasting Speed (326): 20.000000, 50.000000
        Synaptics Pressure Motion (327):        30, 160
        Synaptics Pressure Motion Factor (328): 1.000000, 1.000000
        Synaptics Grab Event Device (329):      0
        Synaptics Gestures (330):       1
        Synaptics Capabilities (331):   1, 0, 1, 1, 1, 1, 1
        Synaptics Pad Resolution (332): 98, 55
        Synaptics Area (333):   0, 0, 0, 0
        Synaptics Noise Cancellation (334):     26, 26
        Device Product ID (263):        2, 7
        Device Node (264):      "/dev/input/event1"




When correct settings are applied:
Device 'SynPS/2 Synaptics TouchPad':
        Device Enabled (142):   1
        Coordinate Transformation Matrix (144): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        Device Accel Profile (274):     1
        Device Accel Constant Deceleration (275):       2.500000
        Device Accel Adaptive Deceleration (276):       1.000000
        Device Accel Velocity Scaling (277):    12.500000
        Synaptics Edges (299):  1766, 5388, 1637, 4463
        Synaptics Finger (300): 25, 30, 0
        Synaptics Tap Time (301):       180
        Synaptics Tap Move (302):       234
        Synaptics Tap Durations (303):  180, 100, 100
        Synaptics ClickPad (304):       0
        Synaptics Middle Button Timeout (305):  75
        Synaptics Two-Finger Pressure (306):    282
        Synaptics Two-Finger Width (307):       7
        Synaptics Scrolling Distance (308):     106, 106
        Synaptics Edge Scrolling (309): 1, 0, 0
        Synaptics Two-Finger Scrolling (310):   1, 0
        Synaptics Move Speed (311):     1.000000, 1.750000, 0.037460, 0.000000
        Synaptics Button Scrolling (312):       1, 1
        Synaptics Button Scrolling Repeat (313):        1, 1
        Synaptics Button Scrolling Time (314):  100
        Synaptics Off (315):    2
        Synaptics Locked Drags (316):   0
        Synaptics Locked Drags Timeout (317):   5000
        Synaptics Tap Action (318):     0, 0, 0, 0, 1, 2, 3
        Synaptics Click Action (319):   1, 1, 1
        Synaptics Circular Scrolling (320):     0
        Synaptics Circular Scrolling Distance (321):    0.100000
        Synaptics Circular Scrolling Trigger (322):     0
        Synaptics Circular Pad (323):   0
        Synaptics Palm Detection (324): 0
        Synaptics Palm Dimensions (325):        10, 200
        Synaptics Coasting Speed (326): 20.000000, 50.000000
        Synaptics Pressure Motion (327):        30, 160
        Synaptics Pressure Motion Factor (328): 1.000000, 1.000000
        Synaptics Grab Event Device (329):      0
        Synaptics Gestures (330):       1
        Synaptics Capabilities (331):   1, 0, 1, 1, 1, 1, 1
        Synaptics Pad Resolution (332): 98, 55
        Synaptics Area (333):   0, 0, 0, 0
        Synaptics Noise Cancellation (334):     26, 26
        Device Product ID (263):        2, 7
        Device Node (264):      "/dev/input/event1"
Comment 5 Christian (Fuchs) 2016-03-05 14:51:16 UTC
Wrong settings: 

Device 'SynPS/2 Synaptics TouchPad':
        Device Enabled (150):   1
        Coordinate Transformation Matrix (152): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        Device Accel Profile (276):     1
        Device Accel Constant Deceleration (277):       2.500000
        Device Accel Adaptive Deceleration (278):       1.000000
        Device Accel Velocity Scaling (279):    12.500000
        Synaptics Edges (280):  1751, 5191, 1624, 4282
        Synaptics Finger (281): 25, 30, 0
        Synaptics Tap Time (282):       180
        Synaptics Tap Move (283):       20
        Synaptics Tap Durations (284):  180, 100, 100
        Synaptics ClickPad (285):       0
        Synaptics Middle Button Timeout (286):  75
        Synaptics Two-Finger Pressure (287):    282
        Synaptics Two-Finger Width (288):       7
        Synaptics Scrolling Distance (289):     10, 10
        Synaptics Edge Scrolling (290): 1, 1, 0
        Synaptics Two-Finger Scrolling (291):   1, 1
        Synaptics Move Speed (292):     0.250000, 0.420000, 0.001000, 0.000000
        Synaptics Off (293):    2
        Synaptics Locked Drags (294):   0
        Synaptics Locked Drags Timeout (295):   5000
        Synaptics Tap Action (296):     0, 0, 0, 0, 1, 2, 3
        Synaptics Click Action (297):   1, 1, 1
        Synaptics Circular Scrolling (298):     0
        Synaptics Circular Scrolling Distance (299):    0.100000
        Synaptics Circular Scrolling Trigger (300):     0
        Synaptics Circular Pad (301):   0
        Synaptics Palm Detection (302): 1
        Synaptics Palm Dimensions (303):        5, 200
        Synaptics Coasting Speed (304): 0.000000, 50.000000
        Synaptics Pressure Motion (305):        30, 160
        Synaptics Pressure Motion Factor (306): 1.000000, 1.000000
        Synaptics Grab Event Device (307):      0
        Synaptics Gestures (308):       1
        Synaptics Capabilities (309):   1, 0, 1, 1, 1, 1, 1
        Synaptics Pad Resolution (310): 85, 60
        Synaptics Area (311):   0, 0, 0, 0
        Synaptics Noise Cancellation (312):     25, 25
        Device Product ID (271):        2, 7
        Device Node (272):      "/dev/input/event5"


Correct settings (manually): 

Device 'SynPS/2 Synaptics TouchPad':
        Device Enabled (150):   1
        Coordinate Transformation Matrix (152): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        Device Accel Profile (276):     1
        Device Accel Constant Deceleration (277):       2.500000
        Device Accel Adaptive Deceleration (278):       1.000000
        Device Accel Velocity Scaling (279):    12.500000
        Synaptics Edges (280):  1751, 5191, 1624, 4282
        Synaptics Finger (281): 25, 30, 0
        Synaptics Tap Time (282):       180
        Synaptics Tap Move (283):       20
        Synaptics Tap Durations (284):  180, 100, 100
        Synaptics ClickPad (285):       0
        Synaptics Middle Button Timeout (286):  75
        Synaptics Two-Finger Pressure (287):    282
        Synaptics Two-Finger Width (288):       7
        Synaptics Scrolling Distance (289):     120, 120
        Synaptics Edge Scrolling (290): 1, 1, 0
        Synaptics Two-Finger Scrolling (291):   1, 1
        Synaptics Move Speed (292):     0.250000, 0.420000, 0.001000, 0.000000
        Synaptics Off (293):    2
        Synaptics Locked Drags (294):   0
        Synaptics Locked Drags Timeout (295):   5000
        Synaptics Tap Action (296):     0, 0, 0, 0, 1, 2, 3
        Synaptics Click Action (297):   1, 1, 1
        Synaptics Circular Scrolling (298):     0
        Synaptics Circular Scrolling Distance (299):    0.100000
        Synaptics Circular Scrolling Trigger (300):     0
        Synaptics Circular Pad (301):   0
        Synaptics Palm Detection (302): 1
        Synaptics Palm Dimensions (303):        5, 200
        Synaptics Coasting Speed (304): 0.000000, 50.000000
        Synaptics Pressure Motion (305):        30, 160
        Synaptics Pressure Motion Factor (306): 1.000000, 1.000000
        Synaptics Grab Event Device (307):      0
        Synaptics Gestures (308):       1
        Synaptics Capabilities (309):   1, 0, 1, 1, 1, 1, 1
        Synaptics Pad Resolution (310): 85, 60
        Synaptics Area (311):   0, 0, 0, 0
        Synaptics Noise Cancellation (312):     25, 25
        Device Product ID (271):        2, 7
        Device Node (272):      "/dev/input/event5"
Comment 6 Rajeesh K V 2016-03-05 16:48:01 UTC
(In reply to Mykola Krachkovsky from comment #0)

> Actual Results:  
> UI units (mm) are just written to touchpad settings. Default touchpad values
> coudn't be set using UI. 

Are you unable to set the scrolling distance parameters in UI? Do you also have libinput driver (xorg-x11-drv-libinput or equivalent) installed?
Comment 7 Mykola Krachkovsky 2016-03-05 18:43:38 UTC
I'm able to change values, but Q[Double]SpinBox limits don't allow me to enter standard touchpad value, like 106 for VertScrollDelta (allowed maximum for Scrolling Distance Vertical is 10) and digits after numeric dot are lost. At the same time Circular Scrolling Angle allows only integral values, so default value 0.1 is impossible to be set.

I have no libinput driver for xorg.
Comment 8 Rajeesh K V 2016-03-06 17:15:31 UTC
Created attachment 97717 [details]
Allow large scroll delta

Disclaimer: I don't fully understand why the issue manifested recently (it could be the recent refactoring for hotplug support but not sure).
Could you try the attached patch and see if it helps? It should let you configure the scroll delta values - I chose upper limit of 500, which is arbitrary. I'm quite vary of including this patch in 5.6 as it is quite late in the release cycle.
Please test and report if it helps.
Comment 9 Rajeesh K V 2016-03-06 18:00:46 UTC
Created attachment 97719 [details]
Allow large scroll delta

Please use this version which has fix for maximum finger movement also.
Comment 10 Guillaume DE BURE 2016-03-06 20:48:17 UTC
Confirmed also here on 5.5.95 Archlinux. using libinput fixes the scrolling issue, but then almost every configuration option is greyed out in kcm-touchpad.

I'm sorry, I can not test the patch as this is 5.5.95 from archlinux kde-unstable repository, so it is already compiled :(
Comment 11 Mykola Krachkovsky 2016-03-07 11:01:22 UTC
(In reply to Rajeesh K V from comment #8)
> Created attachment 97717 [details]
> Allow large scroll delta
> 
> Disclaimer: I don't fully understand why the issue manifested recently (it
> could be the recent refactoring for hotplug support but not sure).
> Could you try the attached patch and see if it helps? It should let you
> configure the scroll delta values - I chose upper limit of 500, which is
> arbitrary. I'm quite vary of including this patch in 5.6 as it is quite late
> in the release cycle.
> Please test and report if it helps.

I haven't tested that patch yet, but I've compared old git clone (January clone) with new one and I think I found problem.
In file kcms/touchpad/src/backends/x11/synapticstouchpad.h class SynapticsTouchpad redefines (line 34) fields:
QStringList m_scaleByResX, m_scaleByResY, m_toRadians;
from parent class XlibTouchpad (file kcms/touchpad/src/backends/x11/xlibtouchpad.h, line 79).
So usage that fields in files synapticstouchpad.cpp (adding data) and xlibtouchpad.cpp (reading data) works with different variables. And XlibTouchpad::getPropertyScale returns default 1.0 instead of correct value.
Comment 12 Mykola Krachkovsky 2016-03-07 12:17:14 UTC
Created attachment 97739 [details]
Remove redefinition line from subclass

This looks like works for me. Initial settings aren't corrupted. But KCM works not ok (I'm not sure it connected to this patch, because I've pulled updates from git).
Comment 13 Rajeesh K V 2016-03-07 18:08:20 UTC
(In reply to Mykola Krachkovsky from comment #11)

> In file kcms/touchpad/src/backends/x11/synapticstouchpad.h class
> SynapticsTouchpad redefines (line 34) fields:
> QStringList m_scaleByResX, m_scaleByResY, m_toRadians;
> from parent class XlibTouchpad (file
> kcms/touchpad/src/backends/x11/xlibtouchpad.h, line 79).
> So usage that fields in files synapticstouchpad.cpp (adding data) and
> xlibtouchpad.cpp (reading data) works with different variables. And
> XlibTouchpad::getPropertyScale returns default 1.0 instead of correct value.

Indeed, that would explain the problem. There was a similar bug but that was fixed. Can you raise a review request for this patch or shall I do it for you?

(In reply to Mykola Krachkovsky from comment #11)
> But KCM works not ok
What do you mean by KCM doesn't work?
Comment 14 Mykola Krachkovsky 2016-03-07 18:26:29 UTC
(In reply to Rajeesh K V from comment #13)
> (In reply to Mykola Krachkovsky from comment #11)
> 
> > In file kcms/touchpad/src/backends/x11/synapticstouchpad.h class
> > SynapticsTouchpad redefines (line 34) fields:
> > QStringList m_scaleByResX, m_scaleByResY, m_toRadians;
> > from parent class XlibTouchpad (file
> > kcms/touchpad/src/backends/x11/xlibtouchpad.h, line 79).
> > So usage that fields in files synapticstouchpad.cpp (adding data) and
> > xlibtouchpad.cpp (reading data) works with different variables. And
> > XlibTouchpad::getPropertyScale returns default 1.0 instead of correct value.
> 
> Indeed, that would explain the problem. There was a similar bug but that was
> fixed. Can you raise a review request for this patch or shall I do it for
> you?
> 

I don't know what I should do.


> (In reply to Mykola Krachkovsky from comment #11)
> > But KCM works not ok
> What do you mean by KCM doesn't work?

It looks like VertScrollDelta and HorizScrollDelta are written to ~/.config/touchpadrc but aren't actually set to device. But MaxTapMove, CircScrollDelta works "ok".
There is also "Active settings don't match saved settings. You currently see saved settings." message when I press "Show active settings" I got 10mm for vertical and 0.1mm for horizontal.
Comment 15 Rajeesh K V 2016-03-07 18:50:33 UTC
(In reply to Mykola Krachkovsky from comment #14)
> (In reply to Rajeesh K V from comment #13)
> > (In reply to Mykola Krachkovsky from comment #11)
> > 
> > > In file kcms/touchpad/src/backends/x11/synapticstouchpad.h class
> > > SynapticsTouchpad redefines (line 34) fields:
> > > QStringList m_scaleByResX, m_scaleByResY, m_toRadians;
> > > from parent class XlibTouchpad (file
> > > kcms/touchpad/src/backends/x11/xlibtouchpad.h, line 79).
> > > So usage that fields in files synapticstouchpad.cpp (adding data) and
> > > xlibtouchpad.cpp (reading data) works with different variables. And
> > > XlibTouchpad::getPropertyScale returns default 1.0 instead of correct value.
> > 
> > Indeed, that would explain the problem. There was a similar bug but that was
> > fixed. Can you raise a review request for this patch or shall I do it for
> > you?
> > 
> 
> I don't know what I should do.

Okay, I'll take care of it.

> 
> 
> > (In reply to Mykola Krachkovsky from comment #11)
> > > But KCM works not ok
> > What do you mean by KCM doesn't work?
> 
> It looks like VertScrollDelta and HorizScrollDelta are written to
> ~/.config/touchpadrc but aren't actually set to device. But MaxTapMove,
> CircScrollDelta works "ok".
> There is also "Active settings don't match saved settings. You currently see
> saved settings." message when I press "Show active settings" I got 10mm for
> vertical and 0.1mm for horizontal.

This requires my patch to work as well. Scroll delta maximum is hard coded to 10 in the kcfg file. I'll fold both into single patch and upstream.
Comment 16 Rajeesh K V 2016-03-07 19:36:56 UTC
Created attachment 97749 [details]
Synaptic driver fix and max scroll delta change

Here's the new patch. Please test and share feedback?
Comment 17 Mykola Krachkovsky 2016-03-07 22:07:24 UTC
(In reply to Rajeesh K V from comment #16)
> Created attachment 97749 [details]
> Synaptic driver fix and max scroll delta change
> 
> Here's the new patch. Please test and share feedback?

It works for me. Actually, only first part is really needed to fix, after that, synaptic value 106 maps to 1.1mm (vert) and 1.9 mm (horiz), so limit for 10mm is not too strict, but driver maximum (1000) maps to about 17-18mm, so it's better to rise limits.
Comment 18 Rajeesh K V 2016-03-09 18:25:15 UTC
Created attachment 97799 [details]
Synaptic driver fix and max scroll delta change

Hello, here is another patch with slightly different technical approach. Could you test this one instead and report if it works?
Comment 19 Rajeesh K V 2016-03-09 19:31:20 UTC
Git commit 86b59198f1c60236034567dc804b578376f8d06c by Rajeesh K V.
Committed on 09/03/2016 at 19:29.
Pushed by knambiar into branch 'Plasma/5.6'.

Touchpad KCM: Fix synaptics driver issues
Fixes couple of issues:
1.  Remove spurious members of SynapticsTouchpad class from parent class XlibTouchpad; fixing wrong scroll delta values.
2.  Enlarge vertical,horizontal&circular scroll delta and maxtapmove allowing value more than 100. The max value supported by driver is 1000

REVIEW: 127306

M  +15   -0    kcms/touchpad/src/backends/x11/synapticstouchpad.cpp
M  +3    -1    kcms/touchpad/src/backends/x11/synapticstouchpad.h
M  +1    -10   kcms/touchpad/src/backends/x11/xlibtouchpad.cpp
M  +2    -4    kcms/touchpad/src/backends/x11/xlibtouchpad.h
M  +3    -3    kcms/touchpad/src/kcm/touchpad.kcfg
M  +13   -1    kcms/touchpad/src/kcm/ui/scroll.ui
M  +3    -0    kcms/touchpad/src/kcm/ui/tap.ui

http://commits.kde.org/plasma-desktop/86b59198f1c60236034567dc804b578376f8d06c
Comment 20 Mykola Krachkovsky 2016-03-10 09:40:43 UTC
(In reply to Rajeesh K V from comment #18)
> Created attachment 97799 [details]
> Synaptic driver fix and max scroll delta change
> 
> Hello, here is another patch with slightly different technical approach.
> Could you test this one instead and report if it works?

Works fine. This solution looks better, thanks!
Comment 21 Christoph Feck 2016-07-18 21:11:23 UTC
*** Bug 360108 has been marked as a duplicate of this bug. ***