Bug 738123 - Two finger vertical/horizontal scrolling broke in 1.5.0
Summary: Two finger vertical/horizontal scrolling broke in 1.5.0
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: xorg-x11-drv-synaptics
Version: 19
Hardware: x86_64
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Peter Hutterer
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard: [cat:conf_input]
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2011-09-14 03:06 UTC by Shawn Starr
Modified: 2018-04-11 12:19 UTC (History)
9 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2013-04-09 07:53:00 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
test in virtual terminal, while two-finger scrolling in GNOME is ON, going up and down the touchpad with 2 fingers (90.67 KB, text/x-log)
2011-10-10 11:54 UTC, ponor.hr
no flags Details
test in virtual terminal, while edge scrolling in GNOME is ON, going up and down the touchpad with 2 fingers (89.65 KB, text/x-log)
2011-10-10 11:55 UTC, ponor.hr
no flags Details
/var/log/messages, just after the evtest was conducted (2.73 MB, application/octet-stream)
2011-10-10 11:56 UTC, ponor.hr
no flags Details
Xorg.0.log (39.31 KB, text/plain)
2011-10-10 11:57 UTC, ponor.hr
no flags Details

Description Shawn Starr 2011-09-14 03:06:55 UTC
Description of problem:
When using either GNOME's gpointing-device-settings or KDE's systemsetting's input device kcm module. Enabling two finger scrolling (horizontal or vertical) doesn't work anymore.

Version-Release number of selected component (if applicable):
1.5.0

How reproducible:
100%

Steps to Reproduce:
1. Enable Two finger scrolling either horizontal or vertical
  
Actual results:
Nothing happens when you try two finger scrolling.


Expected results:
Scrolling...

Comment 1 Shawn Starr 2011-09-14 03:07:51 UTC
xinput info:

Device 'SynPS/2 Synaptics TouchPad':
        Device Enabled (132):   1
        Coordinate Transformation Matrix (134): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        Device Accel Profile (254):     1
        Device Accel Constant Deceleration (255):       2.500000
        Device Accel Adaptive Deceleration (256):       1.000000
        Device Accel Velocity Scaling (257):    12.500000
        Synaptics Edges (275):  1760, 5310, 1636, 4442
        Synaptics Finger (276): 31, 36, 256
        Synaptics Tap Time (277):       180
        Synaptics Tap Move (278):       231
        Synaptics Tap Durations (279):  180, 180, 100
        Synaptics Tap FastTap (280):    0
        Synaptics Middle Button Timeout (281):  75
        Synaptics Two-Finger Pressure (282):    282
        Synaptics Two-Finger Width (283):       7
        Synaptics Scrolling Distance (284):     200, 105
        Synaptics Edge Scrolling (285): 1, 0, 1
        Synaptics Two-Finger Scrolling (286):   1, 0
        Synaptics Move Speed (287):     1.000000, 1.750000, 0.038030, 40.000000
        Synaptics Edge Motion Pressure (288):   30, 160
        Synaptics Edge Motion Speed (289):      1, 420
        Synaptics Edge Motion Always (290):     0
        Synaptics Off (291):    0
        Synaptics Locked Drags (292):   0
        Synaptics Locked Drags Timeout (293):   5000
        Synaptics Tap Action (294):     0, 0, 0, 3, 1, 3, 2
        Synaptics Click Action (295):   1, 1, 1
        Synaptics Circular Scrolling (296):     0
        Synaptics Circular Scrolling Distance (297):    0.010000
        Synaptics Circular Scrolling Trigger (298):     0
        Synaptics Circular Pad (299):   0
        Synaptics Palm Detection (300): 0
        Synaptics Palm Dimensions (301):        10, 200
        Synaptics Coasting Speed (302): 0.400000, 50.000000
        Synaptics Pressure Motion (303):        30, 160
        Synaptics Pressure Motion Factor (304): 1.000000, 1.000000
        Synaptics Grab Event Device (305):      1
        Synaptics Gestures (306):       1
        Synaptics Capabilities (307):   1, 0, 1, 0, 0, 1, 1
        Synaptics Pad Resolution (308): 111, 67
        Synaptics Area (309):   0, 0, 0, 0
        Synaptics Noise Cancellation (310):     26, 26
        Device Product ID (251):        2, 7
        Device Node (252):      "/dev/input/event4"
[

Comment 2 Shawn Starr 2011-09-14 03:13:52 UTC
Downgrading to: xorg-x11-drv-synaptics-1.4.1-3.fc17 worked.

So looks like regression.

Comment 3 Matěj Cepl 2011-09-16 22:24:13 UTC
Thanks for the bug report.  We have reviewed the information you have provided above, and there is some additional information we require that will be helpful in our diagnosis of this issue.

Please attach

* your X server config file (/etc/X11/xorg.conf, if available),
* X server log file (/var/log/Xorg.*.log*; check with grep Backtrace /var/log/Xorg* which logs might be the most interesting ones, send us at least Xorg.0.log),
* output of the command evtest /dev/input/event<number you find in Xorg.0.log>, and
* system log (/var/log/messages)

to the bug report as individual uncompressed file attachments using the bugzilla file attachment link above.

We will review this issue again once you've had a chance to attach this information.

Thanks in advance.

Comment 4 ponor.hr 2011-10-10 11:54:34 UTC
Created attachment 527218 [details]
test in virtual terminal, while two-finger scrolling in GNOME is ON, going up and down the touchpad with 2 fingers

Comment 5 ponor.hr 2011-10-10 11:55:18 UTC
Created attachment 527219 [details]
test in virtual terminal, while edge scrolling in GNOME is ON, going up and down the touchpad with 2 fingers

Comment 6 ponor.hr 2011-10-10 11:56:38 UTC
Created attachment 527220 [details]
/var/log/messages, just after the evtest was conducted

Comment 7 ponor.hr 2011-10-10 11:57:29 UTC
Created attachment 527221 [details]
Xorg.0.log

Comment 8 ponor.hr 2011-10-10 12:04:28 UTC
I'm having the same problem on Fedora 16 beta, xorg-x11-drv-synaptics-1.5.0-1.fc16.i686.
Hope the attached files will help. Many thanks!

Comment 9 ponor.hr 2011-10-11 05:07:50 UTC
Downgrading to xorg-x11-drv-synaptics-1.4.1-3.fc16.i686, two-finger scrolling works again.

Comment 10 Mads Kiilerich 2011-10-11 12:43:47 UTC
FWIW it works for with 1.5.0 on a MacBook.

Comment 11 Peter Hutterer 2011-10-12 04:44:02 UTC
(In reply to comment #9)
> Downgrading to xorg-x11-drv-synaptics-1.4.1-3.fc16.i686, two-finger scrolling
> works again.

if you can, please bisect the upstream driver. I'm hopelessly overloaded.

Comment 12 ponor.hr 2011-10-12 07:47:42 UTC
xorg-x11-drv-synaptics-1.5.0-2.fc16.i686 doesn't work too

Running synclient with 1.4.1 I get 
    EmulateTwoFingerMinZ    = 29
    EmulateTwoFingerMinW    = 6
while in 1.5.0 it is
    EmulateTwoFingerMinZ    = 282 (!!!!!)
    EmulateTwoFingerMinW    = 7

Some other values also changed between the two versions, but only by +/- 1 or so.
Is this a typo in src/synaptics.c perhaps?
emulateTwoFingerMinZ = priv->minp + range * (282.0/256);

Just a clue, as I have no idea how this all works.

Comment 13 Peter Hutterer 2011-10-13 00:19:11 UTC
could be. does it work again if you set it to 29?

Comment 14 ponor.hr 2011-10-13 05:17:29 UTC
Yes!
Setting EmulateTwoFingerMinZ to above 80 in the working driver (1.4.1) two-finger scrolling ceases to function.
Setting EmulateTwoFingerMinZ=29 in the newest driver (1.5.0) two-finger scrolling works again.
I hope you'll find some time to fix this in the driver. I can see that the value 282.0 was around in many versions of src/synaptics.c in the past, but have no idea of its meaning.
Many thanks!

Comment 15 ponor.hr 2011-10-13 05:48:12 UTC
src/synaptics.c in 1.4.1 had

    if (!priv->has_double && priv->has_width)
	emulateTwoFingerMinZ = fingerHigh;
    else
	emulateTwoFingerMinZ = priv->minp + range * (282.0/256);

and probably the first value (fingerHigh) was mostly used.



src/synaptics.c in 1.5.0 now has only
    emulateTwoFingerMinZ = priv->minp + range * (282.0/256);



and the value of 282.0 is a typo --- 28.0 would be a better value, I guess. Or just the value of fingerHigh.

Comment 16 ponor.hr 2011-10-14 04:27:48 UTC
I've compiled v1.5.0-2 with the mentioned change in src/synaptics.c, namely

emulateTwoFingerMinZ = priv->minp + range * (28.0/256);

and two-finger scrolling works again! 
Peter, should I report this to bugs.freedesktop.org, or is it enough to have it here?

Comment 17 Peter Hutterer 2011-10-14 06:27:33 UTC
ok, had a look at this, not sure we we can do anything here. problem is mostly hardware-specific, but the explanation is a bit more complicated.

first: reproduced, my minZ here is 282 as well, changing it down to 29 means it works. But - on a hard-enough tap that reproduces the spurious right-click issues reported in https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-synaptics/+bug/742213, reason for the reverted commit.

the problem is that the hardware doesn't really do pressure and width, they're inferred from each other. A big finger appears as hard pressure, a higher pressure appears as higher width. You can check this easily on a tty with evtest | grep ABS_TOOL_WIDTH or ABS_PRESSURE. Slightly putting down your whole finger will have a higher pressure value than pressing hard with the tip of your finger.

So the problem here now is that if you tap hard enough, the hardware + driver interprets it as two fingers and you get a right-click. That's not ideal, especially not as default setting.

Of course, the current default for emulateTwoFingerMinZ is bogus and too high (Chris Bagwell even said so in his original commit, the one that got reverted) but that's the reason we don't see the spurious events.
So we need to choose:
- allow two-finger scrolling on single-finger hardware by defaul but get spurious right-click events
- don't enable two-finger scrolling on such hardware by default

My choice is the latter. The hardware doesn't make it easy for us, so I'd rather leave this default off and let people that want it enable it and deal with the spurious events then. But the default behaviour of the device should be off.

That's from the driver's POV anyway, the GUI tools shouldn't allow two-finger scrolling (or set the minZ to a useful value) on hardware that doesn't do it.

Unless someone comes up with a good solution to this conundrum, I'll have to close this as CANTFIX. sorry.

Comment 18 ponor.hr 2011-10-14 07:06:03 UTC
The question might as well be whether to disable right-click by default and enable two-finger scrolling (as Touchpad settings in *Fedora's* System Settings have no mention of right click with the touchpad, but have two-finger scrolling as an option).
Most touchpads, afaik, have two buttons for left and right clicks, clicking by two-finger tapping might not even be known to most people. 
Two finger scrolling (vertical & horizontal) comes so often so handy, that it should be considered as the default behaviour.


To conclude: if there's no bug in xorg-x11-drv-synaptics, there's one in System Settings that Fedora now provides, and that changed its behaviour from v.15 to v.16beta.
Do you think I should file the bug for System Settings?

Comment 19 Peter Hutterer 2011-10-17 05:02:35 UTC
(In reply to comment #18)
> The question might as well be whether to disable right-click by default and
> enable two-finger scrolling (as Touchpad settings in *Fedora's* System Settings
> have no mention of right click with the touchpad, but have two-finger scrolling
> as an option).

single-finger tap: left click, two-finger tap: right click, three-finger tap: middle click. it's hardcoded in gsd or control-center (forgot which one) and it's a good default.

> Most touchpads, afaik, have two buttons for left and right clicks, clicking by
> two-finger tapping might not even be known to most people. 

possibly. of the three laptops I have here, two don't have a right button and that ratio will only increase as the 

> Two finger scrolling (vertical & horizontal) comes so often so handy, that it
> should be considered as the default behaviour.

we have edge scrolling in the driver. Unlike the tapping behaviour which you _need_ on some hardware, scrolling has an alternative implementation.


> To conclude: if there's no bug in xorg-x11-drv-synaptics, there's one in System
> Settings that Fedora now provides, and that changed its behaviour from v.15 to
> v.16beta.
> Do you think I should file the bug for System Settings?

Filed one for upstream control-center, let's see what the verdict is.
https://bugzilla.gnome.org/show_bug.cgi?id=661963

Comment 20 ponor.hr 2011-10-18 06:58:58 UTC
I've replied to your report on bugzilla.gnome.org, here I'd just repeat this question:

why is two-finger scrolling by default disabled in the driver by giving EmulateTwoFingerMinZ an 'infinite' value, and not by setting 
VertTwoFingerScroll     = 0
HorizTwoFingerScroll    = 0



If it would help to convince you, here's my emotional story for the end:
I've got quite used to two-fingerscrolling, it's almost indispensable in editing large images, or proofing pdf's in DTP.
Edge scrolling is just so 1980's, reminds me on using bubble-button joysticks.
:)

Regards,
Pip

Comment 21 Peter Hutterer 2011-10-19 03:44:00 UTC
(In reply to comment #20)
> why is two-finger scrolling by default disabled in the driver by giving
> EmulateTwoFingerMinZ an 'infinite' value, and not by setting 
> VertTwoFingerScroll     = 0
> HorizTwoFingerScroll    = 0

note that driver and GNOME don't necessary have the same defaults and GNOME overwrites the driver in the overlapping subset. anyway, in the driver vert two-finger scrolling is enabled on any device that supports two fingers.

what you're trying to use is two finger _emulation_ for touchpads that only have single-finger capabilities. the high value is historical, probably a typo. but when we changed it to something lower we got spurious right clicks.

EmulateTwoFingerMinZ not only affects two-finger scrolling but also two-finger tapping, ClickFinger, etc. all these are separately controlled through options.

> If it would help to convince you, here's my emotional story for the end:
> I've got quite used to two-fingerscrolling, it's almost indispensable in
> editing large images, or proofing pdf's in DTP.
> Edge scrolling is just so 1980's, reminds me on using bubble-button joysticks.

touchpads that only support one finger are so 1980s :P

Comment 22 Nathanel Titane 2011-11-11 04:22:21 UTC
I must say the "spurious right clicks" is probably on a per case/laptop/hardware incident.

I have used the emulation for over a year without any incident.

Apart from that, I do second the fact that the value is set way to high for some reason (typo or not) and has plagued other distributions too...

my fix was to force a lower value on startup as follows:

xinput --set-prop --type=int --format=32 "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Pressure" 10

It would be nice to have it fixed soon to minimize the required hacks to get such simple things working out of the box - I was quite happy on F15 (coming from ubuntu) to find it working straight up after fresh setup  :)

Comment 23 Peter Hutterer 2011-11-11 04:45:14 UTC
(In reply to comment #22)
> It would be nice to have it fixed soon to minimize the required hacks to get
> such simple things working out of the box - I was quite happy on F15 (coming
> from ubuntu) to find it working straight up after fresh setup  :)

and the fix would be? 
This isn't a "simple thing", it depends on the hardware and the usage pattern. Neither of which are known until the bug appears and even then we can't really tell. Short of displaying a box "this will cause spurious events" next to the checkbox in the panel I don't know how to "fix" this.

Comment 24 ponor.hr 2011-11-11 08:15:07 UTC
As I said on https://bugzilla.gnome.org/show_bug.cgi?id=661963 the solution would be to give user an option to choose what to use, and if something doesn't work simply to stop using it. Unfortunately, no replies there :(
Spurious right clicks? How many bug reports did you get on that?

Comment 25 Nathanel Titane 2011-11-11 14:12:19 UTC
It can be considered simple in the sense that is a pressure value that needs to be set lower than 80 points by default (averaging the 20ies-30ies) in the source of the synaptics driver.. rather than keeping a default value of 250+...


Why not try and see what gives rather than complaining about it?

I have already given a pointer to the potential "fix" in my previous post...

Comment 26 Nathanel Titane 2011-11-11 14:18:12 UTC
P.S.:

The solution was already given by pip on post # 16, and has been proven to work...

Comment 27 Joshua Wulf 2011-11-13 05:24:57 UTC
I'd like to turn the two-finger scrolling behavior back on. Are you saying that as a user I can't do that without recompiling the driver? There isn't some configuration that I can set?

Comment 28 ponor.hr 2011-11-13 06:05:02 UTC
First I did it by issuing a command
synclient EmulateTwoFingerMinZ=28
in a terminal, but that works only for one session.

Then I discovered the bug (?) in the driver, and recompiled with my own setting.

I have no idea on how to put the option into xorg.conf. In fact, I have no xorg.conf on my system anywhere, and I guess I'd have to spend a day looking for how to do it.

I guess there will be much more requests here now that Fedora 16 is officialy out.

Comment 29 Steven Drinnan 2011-11-18 10:19:59 UTC
Please fix same problem here

Comment 30 Joshua Wulf 2011-11-20 05:01:06 UTC
WORKAROUND: Bookmark this page, run the command in Comment 28 every time you reboot.

Comment 31 Nathanel Titane 2011-11-20 16:35:03 UTC
Or make a script that runs on startup...

You can also use the command listed in comment 25.

Comment 32 Nathanel Titane 2011-11-20 16:35:42 UTC
p.s.: or simply append any of those commands to /home/$USERNAME/.bashrc

Comment 33 John Hein 2012-01-23 04:48:31 UTC
Lenovo T61p.
Setting EmulateTwoFingerMinZ to 29 (from 282) helped for me.  Before then, two finger scrolling did nothing.

After making that change, I can reproduce spurious right clicks, but only if I "double click" with two fingers - I never really noticed this before reading about the spurious right click bug - I had to work to make it happen.  That right click behavior happened before, however (e.g., I can produce the same behavior in fedora 14).  So it's not really a regression, whereas the broken two finger scrolling is most definitely a regression.

Comment 34 Peter Hutterer 2012-06-26 06:00:07 UTC
regarding permanent configuration: synaptics(4) lists Option "EmulateTwoFingerMinZ" "integer"

http://fedoraproject.org/wiki/Input_device_configuration has a few examples on how to set options for specific devices.

Comment 35 Fedora End Of Life 2013-04-03 19:37:58 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 19 development cycle.
Changing version to '19'.

(As we did not run this process for some time, it could affect also pre-Fedora 19 development
cycle bugs. We are very sorry. It will help us with cleanup during Fedora 19 End Of Life. Thank you.)

More information and reason for this action is here:
https://fedoraproject.org/wiki/BugZappers/HouseKeeping/Fedora19

Comment 36 Shawn Starr 2013-04-09 07:53:00 UTC
With this 'fixed' perhaps we can punt this issue to the DEs KDE and GNOME? as the fixes mentioned xinput and xorg.conf.d file generation work.

Maybe the DEs can add some workarounds in their dialog settings for touchpads?


Note You need to log in before you can comment on or make changes to this bug.