Bug 1545389 - horizontal scrolling not working with touchpad in Fedora 26 (it worked in Fedora 25)
Summary: horizontal scrolling not working with touchpad in Fedora 26 (it worked in Fed...
Keywords:
Status: CLOSED NEXTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: libinput
Version: 26
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Peter Hutterer
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2018-02-14 19:57 UTC by Pablo Rodríguez
Modified: 2018-02-20 02:49 UTC (History)
3 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2018-02-20 02:49:09 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Pablo Rodríguez 2018-02-14 19:57:16 UTC
After installing Fedora 26 on my laptop and configuring /etc/X11/xorg.conf.d/30-touchpad.conf with the following contents:

   Section "InputClass"
        Identifier "system-touchpad"
        Driver "libinput"
        MatchIsTouchpad "on"
        Option "Tapping" "on"
        Option "ScrollMethod" "edge"
        Option "HorizontalScrolling" "on"
   EndSection

Horizontal edge scrolling doesn’t work. The weird thing is that it worked fine in Fedora 25 (after fixing bug #1422221).

libinput-list-devices gives the following info:

Device:           SynPS/2 Synaptics TouchPad
Kernel:           /dev/input/event4
Group:            8
Seat:             seat0, default
Size:             61x28mm
Capabilities:     pointer 
Tap-to-click:     disabled
Tap-and-drag:     enabled
Tap drag lock:    disabled
Left-handed:      disabled
Nat.scrolling:    disabled
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   *two-finger edge 
Click methods:    none
Disable-w-typing: enabled
Accel profiles:   none
Rotation:         n/a

How can I make that horizontal edge scrolling works again?

Many thanks for yoru help,

Pablo

Comment 1 Peter Hutterer 2018-02-15 00:12:08 UTC
are you on wayland or xorg? run xinput list-props "SynPS/2 Synaptics TouchPad" and paste the output here, that should tell you if something else (e.g. gnome) disables horizontal scrolling (though I can't find a gsettings key for it).
if it can't find that device, do xinput list, if you find xwayland-pointers, then you're on wayland.

you can easily verify whether libinput is working if you run sudo libinput debug-events --set-scroll-method=edge and then scroll, if you get POINTER_AXIS events, libinput works.

if libinput works but it doesn't work in the app and you're on wayland, then the issue is somewhere either in mutter or the toolkit (gtk?)

Comment 2 Pablo Rodríguez 2018-02-15 15:48:54 UTC
I don’t know whether I’m on Wayland. I use LXDE as desktop environment, but no idea if it runs on Wayland.

From your suggestion, I assume no Wayland runs here:

    $ xinput list
    ⎡ Virtual core pointer              id=2    [master pointer  (3)]
    ⎜   ↳ Virtual core XTEST pointer        id=4    [slave  pointer  (2)]
    ⎜   ↳ SynPS/2 Synaptics TouchPad        id=11   [slave  pointer  (2)]
    ⎣ Virtual core keyboard             id=3    [master keyboard (2)]
        ↳ Virtual core XTEST keyboard       id=5    [slave  keyboard (3)]
        ↳ Video Bus                         id=6    [slave  keyboard (3)]
        ↳ Power Button                      id=7    [slave  keyboard (3)]
        ↳ Sleep Button                      id=8    [slave  keyboard (3)]
        ↳ Dell WMI hotkeys                  id=9    [slave  keyboard (3)]
        ↳ AT Translated Set 2 keyboard      id=10   [slave  keyboard (3)]

Here you have the list:

    $ xinput list-props "SynPS/2 Synaptics TouchPad"
    Device 'SynPS/2 Synaptics TouchPad':
        Device Enabled (145):   1
        Coordinate Transformation Matrix (147): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Tapping Enabled (284): 1
        libinput Tapping Enabled Default (285): 0
        libinput Tapping Drag Enabled (286):    1
        libinput Tapping Drag Enabled Default (287):    1
        libinput Tapping Drag Lock Enabled (288):   0
        libinput Tapping Drag Lock Enabled Default (289):   0
        libinput Tapping Button Mapping Enabled (290):  1, 0
        libinput Tapping Button Mapping Default (291):  1, 0
        libinput Natural Scrolling Enabled (292):   0
        libinput Natural Scrolling Enabled Default (293):   0
        libinput Left Handed Enabled (294): 0
        libinput Left Handed Enabled Default (295): 0
        libinput Accel Speed (296): 0.000000
        libinput Accel Speed Default (297): 0.000000
        libinput Scroll Methods Available (298):    1, 1, 0
        libinput Scroll Method Enabled (299):   0, 1, 0
        libinput Scroll Method Enabled Default (300):   1, 1, 0
        libinput Send Events Modes Available (269): 1, 1
        libinput Send Events Mode Enabled (270):    0, 0
        libinput Send Events Mode Enabled Default (271):    0, 0
        libinput Disable While Typing Enabled (301):    1
        libinput Disable While Typing Enabled Default (302):    1
        Device Node (272):  "/dev/input/event4"
        Device Product ID (273):    2, 7
        libinput Drag Lock Buttons (303):   <no items>
        libinput Horizontal Scroll Enabled (304):   1

With "libinput debug-events --set-scroll-method=edge", I get POINTER_MOTION events for horizontal scrolling. I only get POINTER_AXIS events for vertical scrolling.

Comment 3 Pablo Rodríguez 2018-02-15 16:04:26 UTC
Peter,

I forgot to mention. two-finger horizontal scrolling works fine. The edge method seems to be the problematic one.

Just in case it helps to solve the issue.

BTW, I have just checked the touchpad measures with libinput-list-devices:

Device:           SynPS/2 Synaptics TouchPad
Kernel:           /dev/input/event4
Group:            8
Seat:             seat0, default
Size:             61x28mm
Capabilities:     pointer 
Tap-to-click:     disabled
Tap-and-drag:     enabled
Tap drag lock:    disabled
Left-handed:      disabled
Nat.scrolling:    disabled
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   *two-finger edge 
Click methods:    none
Disable-w-typing: enabled
Accel profiles:   none
Rotation:         n/a

I just measured the touchpad and measures in millimeters are 73x43. The rule is not very good (it might be 72x42). But the size from libinput-list-devices is wrong.

It might be that this is the cause for the horizontal scrolling not working. (Sorry, but I remembered that I hadn’t provided the actual touchpad measures before.)

Comment 4 Peter Hutterer 2018-02-16 05:00:20 UTC
oh, right. in that case it's the device giving us the wrong edge values, so you're likely scrolling in an area that libinput considers somewhere else. Run the touchpad-edge-detector tool please and paste the output here.

Comment 5 Pablo Rodríguez 2018-02-16 17:30:36 UTC
I hope the info is accurate enough:

    touchpad-edge-detector 72x42 /dev/input/event4 
    Touchpad SynPS/2 Synaptics TouchPad on /dev/input/event4
    Move one finger around the touchpad to detect the actual edges
    Kernel says:	x [1472..5472], y [1408..4448]
    Touchpad sends:	x [1008..5793], y [687..5176] \^C
    
    Touchpad size as listed by the kernel: 60x28mm
    User-specified touchpad size: 72x42mm
    Calculated ranges: 4785/4489
    
    Suggested udev rule:
    # <Laptop model description goes here>
    evdev:name:SynPS/2 Synaptics TouchPad:dmi:bvnDellInc.:bvrA17:bd06/13/2007:svnDellInc.:pnMM061:pvr:rvnDellInc.:rn:rvr:cvnDellInc.:ct8:cvr:*
     EVDEV_ABS_00=1008:5793:66
     EVDEV_ABS_01=687:5176:107

Comment 6 Peter Hutterer 2018-02-18 23:26:15 UTC
whoah, out by more than a cm, no wonder this doesn't work. Put this into 
/etc/udev/hwdb.d/99-touchpad-override.hwdb

evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnDellInc.:pnMM061:*
     EVDEV_ABS_00=1008:5793:66
     EVDEV_ABS_01=687:5176:107

Then run sudo udevadm hwdb --update and reboot. Should magically work ;)
Check with evemu-describe afterwards whether the new axis ranges are applied.

https://wayland.freedesktop.org/libinput/doc/latest/udev_config.html#hwdb has more details

Comment 7 Pablo Rodríguez 2018-02-19 16:29:51 UTC
It works fine now, after applying the configuration you suggested:

evmenu-describe gives the following info:

    # EVEMU 1.3
    # Kernel: 4.14.18-200.fc26.i686
    # DMI: dmi:bvnDellInc.:bvrA17:bd06/13/2007:svnDellInc.:pnMM061:pvr:rvnDellInc.:rn:rvr:cvnDellInc.:ct8:cvr:
    # Input device name: "SynPS/2 Synaptics TouchPad"
    # Input device ID: bus 0x11 vendor 0x02 product 0x07 version 0x1b1
    # Size in mm: 72x41
    # Supported events:
    #   Event type 0 (EV_SYN)
    #     Event code 0 (SYN_REPORT)
    #     Event code 1 (SYN_CONFIG)
    #     Event code 2 (SYN_MT_REPORT)
    #     Event code 3 (SYN_DROPPED)
    #     Event code 4 ((null))
    #     Event code 5 ((null))
    #     Event code 6 ((null))
    #     Event code 7 ((null))
    #     Event code 8 ((null))
    #     Event code 9 ((null))
    #     Event code 10 ((null))
    #     Event code 11 ((null))
    #     Event code 12 ((null))
    #     Event code 13 ((null))
    #     Event code 14 ((null))
    #     Event code 15 (SYN_MAX)
    #   Event type 1 (EV_KEY)
    #     Event code 272 (BTN_LEFT)
    #     Event code 273 (BTN_RIGHT)
    #     Event code 325 (BTN_TOOL_FINGER)
    #     Event code 330 (BTN_TOUCH)
    #     Event code 333 (BTN_TOOL_DOUBLETAP)
    #     Event code 334 (BTN_TOOL_TRIPLETAP)
    #   Event type 3 (EV_ABS)
    #     Event code 0 (ABS_X)
    #       Value     4923
    #       Min       1008
    #       Max       5793
    #       Fuzz         0
    #       Flat         0
    #       Resolution  66
    #     Event code 1 (ABS_Y)
    #       Value     3016
    #       Min        687
    #       Max       5176
    #       Fuzz         0
    #       Flat         0
    #       Resolution 107
    #     Event code 24 (ABS_PRESSURE)
    #       Value        0
    #       Min          0
    #       Max        255
    #       Fuzz         0
    #       Flat         0
    #       Resolution   0
    #     Event code 28 (ABS_TOOL_WIDTH)
    #       Value        0
    #       Min          0
    #       Max         15
    #       Fuzz         0
    #       Flat         0
    #       Resolution   0
    # Properties:
    #   Property  type 0 (INPUT_PROP_POINTER)
    N: SynPS/2 Synaptics TouchPad
    I: 0011 0002 0007 01b1
    P: 01 00 00 00 00 00 00 00
    B: 00 0b 00 00 00 00 00 00 00
    B: 01 00 00 00 00 00 00 00 00
    B: 01 00 00 00 00 00 00 00 00
    B: 01 00 00 00 00 00 00 00 00
    B: 01 00 00 00 00 00 00 00 00
    B: 01 00 00 03 00 00 00 00 00
    B: 01 20 64 00 00 00 00 00 00
    B: 01 00 00 00 00 00 00 00 00
    B: 01 00 00 00 00 00 00 00 00
    B: 01 00 00 00 00 00 00 00 00
    B: 01 00 00 00 00 00 00 00 00
    B: 01 00 00 00 00 00 00 00 00
    B: 01 00 00 00 00 00 00 00 00
    B: 02 00 00 00 00 00 00 00 00
    B: 03 03 00 00 11 00 00 00 00
    B: 04 00 00 00 00 00 00 00 00
    B: 05 00 00 00 00 00 00 00 00
    B: 11 00 00 00 00 00 00 00 00
    B: 12 00 00 00 00 00 00 00 00
    B: 14 00 00 00 00 00 00 00 00
    B: 15 00 00 00 00 00 00 00 00
    B: 15 00 00 00 00 00 00 00 00
    A: 00 1008 5793 0 0 66
    A: 01 687 5176 0 0 107
    A: 18 0 255 0 0 0
    A: 1c 0 15 0 0 0

And libinput-list-devices:

    Device:           SynPS/2 Synaptics TouchPad
    Kernel:           /dev/input/event4
    Group:            8
    Seat:             seat0, default
    Size:             72x42mm
    Capabilities:     pointer 
    Tap-to-click:     disabled
    Tap-and-drag:     enabled
    Tap drag lock:    disabled
    Left-handed:      disabled
    Nat.scrolling:    disabled
    Middle emulation: n/a
    Calibration:      n/a
    Scroll methods:   *two-finger edge 
    Click methods:    none
    Disable-w-typing: enabled
    Accel profiles:   none
    Rotation:         n/a

I wonder whether it is relevant  that evemenu-describe gives size as 72x41 and libinput-list-devices gives it as 72x42.

Many thanks for your help.

Comment 8 Peter Hutterer 2018-02-20 02:49:09 UTC
very strange, not sure where that comes from. The code seems to do the right thing... either way, not something to worry about here.

PR submitted to systemd, please leave your local configuration in place until the systemd release ends up in fedora.

https://github.com/systemd/systemd/pull/8226


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