I just installed ubuntu 16.04 as a dual boot with (pre-installed) Windows (just in case I need it twice a year...) on my new HP Spectre x360 13-ac004nf. Under Windows, the touchpad works fine and intuitively, but on Ubuntu it's almost unusable. The problem is that the zone of the buttons is sensitive. In other words, the touchpad does not look like that:

enter image description here

but like that:

enter image description here

And everytime I lay a finger on the left button zone (not clicking), the pointer stops moving because the system detects a two-finger gesture. Here is the configuation returned by synclient:

Parameter settings:
    LeftEdge                = 1605
    RightEdge               = 5337
    TopEdge                 = 1369
    BottomEdge              = 4487
    FingerLow               = 25
    FingerHigh              = 30
    MaxTapTime              = 180
    MaxTapMove              = 248
    MaxDoubleTapTime        = 100
    SingleTapTimeout        = 180
    ClickTime               = 100
    EmulateMidButtonTime    = 0
    EmulateTwoFingerMinZ    = 282
    EmulateTwoFingerMinW    = 7
    VertScrollDelta         = -113
    HorizScrollDelta        = -113
    VertEdgeScroll          = 0
    HorizEdgeScroll         = 0
    CornerCoasting          = 0
    VertTwoFingerScroll     = 1
    HorizTwoFingerScroll    = 1
    MinSpeed                = 1
    MaxSpeed                = 1.75
    AccelFactor             = 0.0353857
    TouchpadOff             = 2
    LockedDrags             = 0
    LockedDragTimeout       = 5000
    RTCornerButton          = 2
    RBCornerButton          = 3
    LTCornerButton          = 0
    LBCornerButton          = 0
    TapButton1              = 1
    TapButton2              = 3
    TapButton3              = 0
    ClickFinger1            = 1
    ClickFinger2            = 3
    ClickFinger3            = 0
    CircularScrolling       = 0
    CircScrollDelta         = 0.1
    CircScrollTrigger       = 0
    CircularPad             = 0
    PalmDetect              = 0
    PalmMinWidth            = 10
    PalmMinZ                = 200
    CoastingSpeed           = 20
    CoastingFriction        = 50
    PressureMotionMinZ      = 30
    PressureMotionMaxZ      = 160
    PressureMotionMinFactor = 1
    PressureMotionMaxFactor = 1
    ResolutionDetect        = 1
    GrabEventDevice         = 0
    TapAndDragGesture       = 1
    AreaLeftEdge            = 0
    AreaRightEdge           = 0
    AreaTopEdge             = 0
    AreaBottomEdge          = 0
    HorizHysteresis         = 28
    VertHysteresis          = 28
    ClickPad                = 1
    RightButtonAreaLeft     = 3471
    RightButtonAreaRight    = 0
    RightButtonAreaTop      = 4087
    RightButtonAreaBottom   = 0
    MiddleButtonAreaLeft    = 0
    MiddleButtonAreaRight   = 0
    MiddleButtonAreaTop     = 0
    MiddleButtonAreaBottom  = 0

and here is what is returned by less /var/log/Xorg.0.log | grep -i range:

[     5.776] (--) synaptics: SynPS/2 Synaptics TouchPad: x-axis range 1302 - 5640 (res 37)
[     5.776] (--) synaptics: SynPS/2 Synaptics TouchPad: y-axis range 1116 - 4740 (res 64)
[     5.776] (--) synaptics: SynPS/2 Synaptics TouchPad: pressure range 0 - 255
[     5.776] (--) synaptics: SynPS/2 Synaptics TouchPad: finger width range 0 - 15

I tried to play with AreaBottomEdge, but it only disable the moving detection... Which means that the touchpad still detect that there is another finger touching it, and it enters double-fingers gesture mode (scrolling). I would like my touchpad to behave like a touchpad with separate buttons (like the first image) and not detect anything over the zone of the buttons. How to make that happen?

  • are you with Unity 7 desktop right ? In your system settings the Touchpad is recognized in "Mouse and Touchpad" or appear only the Mouse settings? – Yonsy Solis May 2 '17 at 13:21
  • It's in the "Mouse and Touchpad" settings: i.stack.imgur.com/gRF7U.png – Vincent May 2 '17 at 13:28
  • are you with 16.04 or 16.04.2 with hwe components (kernel and xorg) ? – Yonsy Solis May 2 '17 at 16:37
  • "cat /proc/version" returns "Linux version 4.8.0-49-generic (buildd@lcy01-26) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #52~16.04.1-Ubuntu SMP Thu Apr 20 10:55:59 UTC 2017" while "lsb_release -a" returns "No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.2 LTS Release: 16.04 Codename: xenial " – Vincent May 4 '17 at 2:20

I'm not sure there is a technical solution to your problem. If it were me, I'd probably just plug in a mouse, turn the touch pad off, and call it a day.

Non-technical solution

When you can't find a software based solution, shift gears. Try getting some card stock or something. Heavier than printer paper and lighter than cardboard. Figure out how many layers you're going to need. Cut out just enough to cover the buttons on the touch pad button area and fix it to the touch pad with a little hot glue or something else that will be easy to remove later.

It may not be pretty, but your buttons won't be touch sensitive anymore, and you'll still be able to push on them to left- and right-click.

  • Even though I won't do it and I am sure it can be done in software, I liked the approach. – Vincent May 8 '17 at 1:49

first execute xinput list to find your device (I have a HP x360 i7-6500u)

 ~/devops > xinput list                                                         
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ELAN Touchscreen Pen                      id=10   [slave  pointer  (2)]
⎜   ↳ ELAN Touchscreen                          id=11   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                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 
....

You can see, in my case the id is 14 (SynPS/2 Synaptics TouchPad)

now, again see the capabilities for this device

 ~/devops > xinput list-props "14" | grep Capabilities
    Synaptics Capabilities (330):   1, 0, 0, 1, 1, 1, 1

if your third number is zero (like me) then you don't have a physical right button and this need to be "emulated" by software.

now, copy /usr/share/X11/xorg.conf.d/50-synaptics.conf to /etc/X11/xorg.conf.d/

 sudo cp -ax /usr/share/X11/xorg.conf.d/50-synaptics.conf /etc/X11/xorg.conf.d/

and now, in the new file /etc/X11/xorg.conf.d/50-synaptics.conf locate this paragraph:

# This option enables the bottom right corner to be a right button on clickpads
# and the right and middle top areas to be right / middle buttons on clickpads
# with a top button area.
# This option is only interpreted by clickpads.
  Section "InputClass"
     Identifier "Default clickpad buttons"
     MatchDriver "synaptics"
     Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"
     Option "SecondarySoftButtonAreas" "58% 0 0 15% 42% 58% 0 15%"
   EndSection

Add two extra lines before Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0" :

 Option "ClickPad"         "true"
 Option "EmulateMidButtonTime" "0"

the first one must enable right click and the second one middle click.

You have in your settings enabled "Two finger scroll", disable this to only have scroll at the right and bottom of your touchpad.

Now, logout, restart, login again and with luck your left/right regions must be enabled.

  • Just tested, but it does not work. The problem is not that the buttons do not work: they do. However, if I have one finger on the button, and one other to move the mouse, then it's interpreted as a two fingers gesture and I don't want that. I would like the "touching" to be completely deactivated over the button region. – Vincent May 5 '17 at 1:28
  • added one option that you need to disable in your "Settings/Mouse and Touchpad". Consider that this solution is more a software alternative to use the touchpad in a different way that was designed. – Yonsy Solis May 7 '17 at 3:02

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.