ruebenramirez / blog

My blog
http://blog.ruebenramirez.com/
7 stars 0 forks source link

dell xps 15 9550 touchpad #367

Open ruebenramirez opened 7 years ago

ruebenramirez commented 7 years ago

https://blog.spirotot.com/2016/07/27/dell-xps-15-9550-arch-linux-trackpad-gestures/

ruebenramirez commented 7 years ago

ftp://www.x.org/pub/X11R7.5/doc/man/man4/synaptics.4.html

ruebenramirez commented 7 years ago
xinput set-prop 13 "Synaptics Palm Detection" 1
xinput set-prop 13 "Synaptics Palm Dimensions" 7, 80
xinput set-prop 13 "Synaptics Pressure Motion" 70, 160
xinput set-prop 13 "Synaptics Two-Finger Scrolling" 1, 1
xinput set-prop 13 "Synaptics Tap Action" 0, 0, 0, 0, 0, 0, 0
xinput set-prop 13 "Synaptics Scrolling Distance" -30, -30
ruebenramirez commented 7 years ago

these i3 gestures sound pretty awesome: https://github.com/Spirotot/dotFiles/blob/arch/.config/libinput-gestures.conf

ruebenramirez commented 7 years ago

disable i2c_designware driver:

ruebenramirez commented 7 years ago

reddit thread on synaptics palm detection not working in ubuntu: https://www.reddit.com/r/Dell/comments/4601jl/xps_15_9550_ubuntu_palm_detection/

one guy recommends using libinput driver instead of synaptics. Here's his config:

Section "InputClass"
        Identifier "libinput"
        Driver "libinput"
        MatchDevicePath "/dev/input/event*"
        Option "Tapping" "True"
        Option "TappingDragLock" "True"
        Option "PalmDetection" "True"
        Option "DisableWhileTyping" "True"
        Option "NaturalScrolling" "True"
        Option "AccelProfile" "adaptive"
        Option "AccelSpeed" "0.1"
        Option "ClickMethod" "buttonareas"
        Option "MiddleEmulation" "True"
        Option "ScrollMethod" "twofinger"
        Option "HorizontalScrolling" "True"
        Option "SendEventsMode" "disabled-on-external-mouse"
EndSection
ruebenramirez commented 7 years ago

arch wiki page on Dell XPS 15 9550 also recommends libinput.. https://wiki.archlinux.org/index.php/Dell_XPS_15_(9550)#Touchpad

ruebenramirez commented 7 years ago

major hayden had issues with his xps 13 a little while ago -- https://major.io/2015/02/03/linux-support-dell-xps-13-9343-2015-model/

ruebenramirez commented 7 years ago

these folks are troubleshooting the dell xps 13 touchpad configuration on ubuntu also: https://github.com/advancingu/XPS13Linux/issues/3

I had blacklisted the the I2C driver in my /etc/modprobe.d/synaptics.conf file with:

blacklist i2c-designware-platform

To toggle the blacklist off, I commented out the blacklist line and reloaded the driver list via:

sudo depmod -a
sudo update-initramfs -u
ruebenramirez commented 7 years ago

looks like if I don't blacklist the I2C drivers and then install the xorg libinput packages:

sudo apt install xserver-xorg-input-libinput

then everything is working really nicely with these config settings:

xinput set-prop "DLL06E4:01 06CB:7A13 Touchpad" "Synaptics Palm Detection" 1
xinput set-prop "DLL06E4:01 06CB:7A13 Touchpad" "Synaptics Palm Dimensions" 6, 300
xinput set-prop "DLL06E4:01 06CB:7A13 Touchpad" "Synaptics Pressure Motion" 80, 200
xinput set-prop "DLL06E4:01 06CB:7A13 Touchpad" "Synaptics Two-Finger Scrolling" 1, 1
xinput set-prop "DLL06E4:01 06CB:7A13 Touchpad" "Synaptics Tap Action" 0, 0, 0, 0, 0, 0, 0
xinput set-prop "DLL06E4:01 06CB:7A13 Touchpad" "Synaptics Scrolling Distance" -30, -30
xinput set-prop "DLL06E4:01 06CB:7A13 Touchpad" "Synaptics Finger" 32, 35, 0
xinput set-prop "DLL06E4:01 06CB:7A13 Touchpad" "libinput Natural Scrolling Enabled" 1 
xinput set-prop "DLL06E4:01 06CB:7A13 Touchpad" "libinput Click Method Enabled" 0 1
brukatv commented 7 years ago

Installing the libinput driver fixes it. What a huge improvement! I would also recommend doing some of the config steps mentioned here: https://forum.manjaro.org/t/synaptic-vs-libinput/3155/32 to enable click-to-tap

blunden commented 7 years ago

@ruebenramirez Are you sure those Synaptics properties still show up (in xinput list-props "DLL06E4:01 06CB:7A13 Touchpad") and work when you don't use the Synaptic driver? Some other guides suggest they don't. I need to be able to reassign what the tapping with two or three fingers does, like I currently do with the following line:

xinput set-prop 11 "Synaptics Tap Action" 2 3 0 0 1 2 3 (i.e. 2 finger tap = middle mouse button, 3 finger tap = right mouse button)

@brukatv Are you using any of the Synaptics properties?

ruebenramirez commented 7 years ago

@blunden https://github.com/ruebenramirez/.dotfiles/blob/master/bin/configure-trackpad-palm-detection.sh#L6 (fyi the synclient lines are for some thinkpads I use, hasn't helped with the xps 9550 touchpad)

I run that via my .xinitrc (via startx): https://github.com/ruebenramirez/.dotfiles/blob/master/.xinitrc#L9

(sorry for how sloppy this is right now....I need to spend a bit of time cleaning all of this up)

Once I'm in my X session (i3wm in my case):

$ xinput list-props "DLL06E4:01 06CB:7A13 Touchpad"
Device 'DLL06E4:01 06CB:7A13 Touchpad':
    Device Enabled (139):   1
    Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Tapping Enabled (279): 0
    libinput Tapping Enabled Default (280): 0
    libinput Tapping Drag Enabled (281):    1
    libinput Tapping Drag Enabled Default (282):    1
    libinput Tapping Drag Lock Enabled (283):   0
    libinput Tapping Drag Lock Enabled Default (284):   0
    libinput Accel Speed (285): 0.000000
    libinput Accel Speed Default (286): 0.000000
    libinput Natural Scrolling Enabled (287):   1
    libinput Natural Scrolling Enabled Default (288):   0
    libinput Send Events Modes Available (259): 1, 1
    libinput Send Events Mode Enabled (260):    0, 0
    libinput Send Events Mode Enabled Default (261):    0, 0
    libinput Left Handed Enabled (289): 0
    libinput Left Handed Enabled Default (290): 0
    libinput Scroll Methods Available (291):    1, 1, 0
    libinput Scroll Method Enabled (292):   1, 0, 0
    libinput Scroll Method Enabled Default (293):   1, 0, 0
    libinput Click Methods Available (294): 1, 1
    libinput Click Method Enabled (295):    0, 1
    libinput Click Method Enabled Default (296):    1, 0
    libinput Middle Emulation Enabled (297):    0
    libinput Middle Emulation Enabled Default (298):    0
    libinput Disable While Typing Enabled (299):    1
    libinput Disable While Typing Enabled Default (300):    1
    Device Node (262):  "/dev/input/event12"
    Device Product ID (263):    1739, 31251
    libinput Drag Lock Buttons (301):   <no items>
    libinput Horizonal Scroll Enabled (264):    1
blunden commented 7 years ago

@ruebenramirez As those Synaptics properties are not listed, I'm guessing they have no effect after your switch to libinput. That's a shame. :(

brukatv commented 7 years ago

@blunden you're using a different driver so obviously Synaptics configs will have no effect. I believe you can easily customize the behavior of multi-button taps. Take a look at these instructions: https://wiki.archlinux.org/index.php/Libinput#Button_re-mapping

blunden commented 7 years ago

@brukatv Since you are already using libinput on this hardware, could you tell me the output from xinput get-button-map [device]?

ruebenramirez commented 7 years ago

@blunden

$ xinput get-button-map "DLL06E4:01 06CB:7A13 Touchpad"
1 2 3 4 5 6 7
brukatv commented 7 years ago

same result 1 2 3 4 5 6 7

blunden commented 7 years ago

I ended up trying libinput and palm detection/rejection now works, as previously mentioned. This is the configuration I ended up using.:

Section "InputClass"
        Identifier "libinput"
        Driver "libinput"
        MatchDevicePath "/dev/input/event*"
        MatchIsTouchpad "on"
        Option "Tapping" "True"
        Option "TappingButtonMap" "lmr"
        Option "TappingDragLock" "True"
        Option "PalmDetection" "True"
        Option "DisableWhileTyping" "True"
        Option "NaturalScrolling" "True"
        Option "AccelProfile" "adaptive"
        Option "AccelSpeed" "0.05"
        Option "ClickMethod" "buttonareas"
        Option "MiddleEmulation" "True"
        Option "ScrollMethod" "twofinger"
        Option "HorizontalScrolling" "True"
EndSection

Unfortunately the libinput driver shipping with Ubuntu 16.10 doesn't support the TappingButtonMap option that would allow me to remap the taps the way I want without affecting the buttons at the bottom. I guess I'll just have to wait until 17.04 or build the newer versions myself.

Besides those, the most important changes I made from the previously posted config is adding the line below to prevent the settings to affect other input devices like external mice.

MatchIsTouchpad "on"

ruebenramirez commented 7 years ago

added a simple script to quickly toggle the trackpad on/off: https://github.com/ruebenramirez/.dotfiles/blob/master/bin/toggle-dell-trackpad.sh

ruebenramirez commented 7 years ago

even better solution now that I'm running on the xps 9360:

It is a little difficult with this touchpad. The best I have gotten it to work with is through libinput. I just did: sudo apt-get install libinput Then I edited the libinput config in /usr/share/X11/xorg.conf.d/90-libinput.conf to have this:

Section "InputClass"
        Identifier "libinput touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
        Option "Tapping" "True"
        Option "PalmDetection" "True"
        Option "TappingDragLock" "True"
EndSection

source: https://www.reddit.com/r/Dell/comments/4pgek1/dell_xps_13_touch_pad_palm_detection_on_ubuntu/d4laasd/