Solved Thinkpad X1 Carbon 5th Generation Touchpad vertical scroll and click dragging

(hoping this is the right forum - probably should go to Mobile Computing?)

Hi,

I am struggling with having my touchpad work correctly. I am running FreeBSD 11 Stable (for anyone reading this in future, this is close to 11.2 release, with Beta 1 already out).

To be precise it works in the sense that I can move the mouse and tap (not click).

What is not working:
- Two Finger Scrolling, despite enabled
- Clicking with buttons, neither the buttons above the touchpad, nor the built-in (bottom left/right "behind" the touchpad). I want to be able to click and move to be able to drag & drop.
- Moving the mouse while clicking the "built-in" buttons doesn't work.

And a side question. I think moused mostly works, but my problem here is that I'd love to have some way to disable synaptics, preferably automatic, when a real mouse is attached. Currently I manually turn it off, mostly because it isn't working correctly. So I'd be completely fine, with using moused instead (just saw some posts about how this doesn't really work and one should disabled it when using synaptics - if I got that right).

Oh by the way, I think I had accidential edge scroll working, but it was very flaky making me wonder if the touch pad size isn't recognized correctly. That is though purely based on speculation while playing around with synclient options. I just am not sure how to know whether the size is detected correctly. I am also not sure how having moused enabled vs having it disabled really affects things, other than not being able to use synclient, because it uses a different driver.

This is using a setup with moused disabled, but the sysctl having it enabled. Here my actual configuration:

sysctls at runtime:
Code:
hw.psm.synaptics.softbutton3_x: 3900
hw.psm.synaptics.softbutton2_x: 3100
hw.psm.synaptics.softbuttons_y: 1700
hw.psm.synaptics.touchpad_off: 0
hw.psm.synaptics.vscroll_div_max: 150
hw.psm.synaptics.vscroll_div_min: 100
hw.psm.synaptics.vscroll_min_delta: 50
hw.psm.synaptics.vscroll_ver_area: -600
hw.psm.synaptics.vscroll_hor_area: 0
hw.psm.synaptics.taphold_timeout: 125000
hw.psm.synaptics.tap_min_queue: 2
hw.psm.synaptics.tap_max_delta: 80
hw.psm.synaptics.div_len: 100
hw.psm.synaptics.div_max_na: 30
hw.psm.synaptics.div_max: 17
hw.psm.synaptics.div_min: 9
hw.psm.synaptics.weight_len_squared: 2000
hw.psm.synaptics.weight_previous_na: 20
hw.psm.synaptics.weight_previous: 6
hw.psm.synaptics.weight_current: 3
hw.psm.synaptics.multiplicator: 10000
hw.psm.synaptics.window_max: 10
hw.psm.synaptics.window_min: 4
hw.psm.synaptics.na_left: 1600
hw.psm.synaptics.na_bottom: 1408
hw.psm.synaptics.na_right: 563
hw.psm.synaptics.na_top: 1783
hw.psm.synaptics.margin_left: 200
hw.psm.synaptics.margin_bottom: 200
hw.psm.synaptics.margin_right: 200
hw.psm.synaptics.margin_top: 200
hw.psm.synaptics.max_width: 8
hw.psm.synaptics.max_pressure: 100
hw.psm.synaptics.min_pressure: 43
hw.psm.synaptics.two_finger_scroll: 1
hw.psm.synaptics.max_y: 6143
hw.psm.synaptics.max_x: 6143
hw.psm.synaptics.directional_scrolls: 1
hw.psm.synaptics_support: 1

synclient:

Code:
Parameter settings:
    LeftEdge                = 1777
    RightEdge               = 5523
    TopEdge                 = 1860
    BottomEdge              = 4040
    FingerLow               = 25
    FingerHigh              = 30
    MaxTapTime              = 180
    MaxTapMove              = 208
    MaxDoubleTapTime        = 180
    SingleTapTimeout        = 180
    ClickTime               = 100
    EmulateMidButtonTime    = 75
    EmulateTwoFingerMinZ    = 7
    EmulateTwoFingerMinW    = 7
    VertScrollDelta         = -111
    HorizScrollDelta        = 94
    VertEdgeScroll          = 0
    HorizEdgeScroll         = 0
    CornerCoasting          = 0
    VertTwoFingerScroll     = 1
    HorizTwoFingerScroll    = 0
    MinSpeed                = 1
    MaxSpeed                = 1.75
    AccelFactor             = 0.0421407
    TouchpadOff             = 0
    LockedDrags             = 0
    LockedDragTimeout       = 5000
    RTCornerButton          = 0
    RBCornerButton          = 0
    LTCornerButton          = 0
    LBCornerButton          = 0
    TapButton1              = 1
    TapButton2              = 0
    TapButton3              = 2
    ClickFinger1            = 1
    ClickFinger2            = 3
    ClickFinger3            = 2
    CircularScrolling       = 0
    CircScrollDelta         = 0.1
    CircScrollTrigger       = 0
    CircularPad             = 0
    PalmDetect              = 1
    PalmMinWidth            = 10
    PalmMinZ                = 200
    CoastingSpeed           = 20
    CoastingFriction        = 50
    PressureMotionMinZ      = 30
    PressureMotionMaxZ      = 160
    PressureMotionMinFactor = 1
    PressureMotionMaxFactor = 1
    GrabEventDevice         = 1
    TapAndDragGesture       = 1
    AreaLeftEdge            = 0
    AreaRightEdge           = 0
    AreaTopEdge             = 0
    AreaBottomEdge          = 0
    HorizHysteresis         = 23
    VertHysteresis          = 23
    ClickPad                = 0

xorg.conf parts
Code:
Section "ServerLayout"
    Identifier     "X.org Configured"
    Screen      0  "Screen0" 0 0
    InputDevice    "Mouse0" "CorePointer"
    InputDevice    "Touchpad0" "CorePointer"
    InputDevice    "Keyboard0" "CoreKeyboard"
    Option        "AutoAddDevices" "false"
EndSection


Section "Module"
    Load  "glx"
    Load  "synaptics"
EndSection

Section "InputDevice"
    Identifier  "Keyboard0"
    Driver      "kbd"
    Option "XkbLayout" "de"
    Option "XkbVariant" "nodeadkeys"
EndSection

Section "InputDevice"
    Identifier  "Touchpad0"
    Driver      "synaptics"
    Option      "Protocol" "psm"
    Option      "Device" "/dev/psm0"
    Option        "PalmDetect" "1"
    Option        "SendCoreEvents" "1"
    Option        "VertTwoFingerScroll" "1"
    Option        "VertEdgeScroll" "0"
    Option        "EmulateTwoFingerMinZ" "7"
    Option        "EmulateTwoFingerMinW" "7"
    Option        "VertScrollDelta" "-111"
    Option        "TapButton2" "0"
EndSection

Section "InputDevice"
    Identifier  "Mouse0"
    Driver      "mouse"
    Option        "Protocol" "auto"
    Option        "Device" "/dev/sysmouse"
    Option        "ZAxisMapping" "4 5 6 7"
EndSection

rc.conf parts
Code:
moused_enable="NO"
slim_enable="YES"
hald_enable="NO"
dbus_enable="YES"

Xorg.0.log:
Code:
X.Org X Server 1.18.4
Release Date: 2016-07-19
[  4074.903] X Protocol Version 11, Revision 0
[  4074.903] Build Operating System: FreeBSD 11.2-PRERELEASE amd64
[  4074.903] Current Operating System: FreeBSD thinkcabal.local 11.2-BETA1 FreeBSD 11.2-BETA1 #5 r333575: Sun May 13 02:08:41 CEST 2018     reezer@thinkcabal.local:/usr/obj/usr/src/sys/GENERIC amd64
[  4074.904] Build Date: 06 May 2018  07:57:55PM
[  4074.904]
[  4074.904] Current version of pixman: 0.34.0
[  4074.904]     Before reporting problems, check http://wiki.x.org
    to make sure that you have the latest version.
[  4074.904] Markers: (--) probed, (**) from config file, (==) default setting,
    (++) from command line, (!!) notice, (II) informational,
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[  4074.904] (==) Log file: "/var/log/Xorg.0.log", Time: Sun May 13 11:43:44 2018
[  4074.904] (==) Using config file: "/usr/local/etc/X11/xorg.conf"
[  4074.904] (==) Using system config directory "/usr/local/share/X11/xorg.conf.d"
[  4074.905] (==) ServerLayout "X.org Configured"
[  4074.905] (**) |-->Screen "Screen0" (0)
[  4074.905] (**) |   |-->Monitor "Monitor0"
[  4074.905] (**) |   |-->Device "Card0"
[  4074.905] (**) |-->Input Device "Mouse0"
[  4074.905] (**) |-->Input Device "Touchpad0"
[  4074.905] (**) |-->Input Device "Keyboard0"
[  4074.905] (**) Option "AutoAddDevices" "false"
[  4074.905] (**) Not automatically adding devices
[  4074.905] (==) Automatically enabling devices
[  4074.905] (==) Not automatically adding GPU devices
[  4074.905] (==) Max clients allowed: 256, resource mask: 0x1fffff
[  4074.905] (**) FontPath set to:
    /usr/local/share/fonts/misc/,
    /usr/local/share/fonts/TTF/,
    /usr/local/share/fonts/OTF/,
    /usr/local/share/fonts/Type1/,
    /usr/local/share/fonts/100dpi/,
    /usr/local/share/fonts/75dpi/,
    /usr/local/share/fonts/misc/,
    /usr/local/share/fonts/TTF/,
    /usr/local/share/fonts/OTF/,
    /usr/local/share/fonts/Type1/,
    /usr/local/share/fonts/100dpi/,
    /usr/local/share/fonts/75dpi/
[  4074.905] (**) ModulePath set to "/usr/local/lib/xorg/modules"
[  4074.905] (II) Loader magic: 0x813fc0
[  4074.905] (II) Module ABI versions:
[  4074.905]     X.Org ANSI C Emulation: 0.4
[  4074.905]     X.Org Video Driver: 20.0
[  4074.905]     X.Org XInput driver : 22.1
[  4074.905]     X.Org Server Extension : 9.0
[  4074.906] (--) PCI:*(0:0:2:0) 8086:5916:17aa:224f rev 2, Mem @ 0xeb000000/16777216, 0x60000000/268435456, I/O @ 0x0000e000/64, BIOS @ 0x????????/65536
[  4074.906] (II) "glx" will be loaded. This was enabled by default and also specified in the config file.
[  4074.906] (II) LoadModule: "glx"
[  4074.906] (II) Loading /usr/local/lib/xorg/modules/extensions/libglx.so
[  4074.908] (II) Module glx: vendor="X.Org Foundation"
[  4074.908]     compiled for 1.18.4, module version = 1.0.0
[  4074.908]     ABI class: X.Org Server Extension, version 9.0
[  4074.908] (==) AIGLX enabled
[  4074.908] (II) LoadModule: "synaptics"
[  4074.908] (II) Loading /usr/local/lib/xorg/modules/input/synaptics_drv.so
[  4074.908] (II) Module synaptics: vendor="X.Org Foundation"
[  4074.908]     compiled for 1.18.4, module version = 1.9.0
[  4074.908]     Module class: X.Org XInput Driver
[  4074.908]     ABI class: X.Org XInput driver, version 22.1
[  4074.908] (II) LoadModule: "intel"
[  4074.908] (II) Loading /usr/local/lib/xorg/modules/drivers/intel_drv.so
[  4074.909] (II) Module intel: vendor="X.Org Foundation"
[  4074.909]     compiled for 1.18.4, module version = 2.99.917
[  4074.909]     Module class: X.Org Video Driver
[  4074.909]     ABI class: X.Org Video Driver, version 20.0
[  4074.909] (II) LoadModule: "mouse"
[  4074.909] (II) Loading /usr/local/lib/xorg/modules/input/mouse_drv.so
[  4074.909] (II) Module mouse: vendor="X.Org Foundation"
[  4074.909]     compiled for 1.18.4, module version = 1.9.2
[  4074.909]     Module class: X.Org XInput Driver
[  4074.909]     ABI class: X.Org XInput driver, version 22.1
[  4074.910] (II) LoadModule: "synaptics"
[  4074.910] (II) Loading /usr/local/lib/xorg/modules/input/synaptics_drv.so
[  4074.910] (II) Module synaptics: vendor="X.Org Foundation"
[  4074.910]     compiled for 1.18.4, module version = 1.9.0
[  4074.910]     Module class: X.Org XInput Driver
[  4074.910]     ABI class: X.Org XInput driver, version 22.1
[  4074.910] (II) LoadModule: "kbd"
[  4074.910] (II) Loading /usr/local/lib/xorg/modules/input/kbd_drv.so
[  4074.910] (II) Module kbd: vendor="X.Org Foundation"
[  4074.910]     compiled for 1.18.4, module version = 1.9.0
[  4074.910]     Module class: X.Org XInput Driver
[  4074.910]     ABI class: X.Org XInput driver, version 22.1
[ snip intel graphics bla ]
[  4074.960] (II) Loading sub module "fb"
[  4074.960] (II) LoadModule: "fb"
[  4074.960] (II) Loading /usr/local/lib/xorg/modules/libfb.so
[  4074.961] (II) Module fb: vendor="X.Org Foundation"
[  4074.961]     compiled for 1.18.4, module version = 1.0.0
[  4074.961]     ABI class: X.Org ANSI C Emulation, version 0.4
[  4074.961] (II) Loading sub module "dri2"
[  4074.961] (II) LoadModule: "dri2"
[  4074.961] (II) Module "dri2" already built-in
[  4074.961] (==) Depth 24 pixmap format is 32 bpp
[  4074.961] (II) intel(0): Allocated new frame buffer 1920x1080 stride 7680, tiled
[  4074.961] (II) UXA(0): Driver registered support for the following operations:
[  4074.961] (II)         solid
[  4074.961] (II)         copy
[  4074.961] (II)         put_image
[  4074.961] (II)         get_image
[  4074.961] (II) intel(0): [DRI2] Setup complete
[  4074.961] (II) intel(0): [DRI2]   DRI driver: i965
[  4074.961] (II) intel(0): [DRI2]   VDPAU driver: va_gl
[  4074.961] (==) intel(0): Backing store enabled
[  4074.961] (==) intel(0): Silken mouse enabled
[  4074.961] (II) intel(0): Initializing HW Cursor
[  4074.961] (II) intel(0): RandR 1.2 enabled, ignore the following RandR disabled message.
[  4074.961] (==) intel(0): DPMS enabled
[  4074.962] (==) intel(0): Intel XvMC decoder enabled
[  4074.962] (WW) intel(0): Disabling Xv because no adaptors could be initialized.
[  4074.962] (II) intel(0): DRI2: Enabled
[  4074.962] (II) intel(0): DRI3: Disabled
[  4074.992] (--) RandR disabled
[  4075.007] (II) AIGLX: enabled GLX_MESA_copy_sub_buffer
[  4075.007] (II) AIGLX: enabled GLX_ARB_create_context
[  4075.007] (II) AIGLX: enabled GLX_ARB_create_context_profile
[  4075.007] (II) AIGLX: enabled GLX_EXT_create_context_es{,2}_profile
[  4075.007] (II) AIGLX: enabled GLX_INTEL_swap_event
[  4075.007] (II) AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control
[  4075.007] (II) AIGLX: enabled GLX_EXT_framebuffer_sRGB
[  4075.007] (II) AIGLX: enabled GLX_ARB_fbconfig_float
[  4075.007] (II) AIGLX: enabled GLX_EXT_fbconfig_packed_float
[  4075.007] (II) AIGLX: GLX_EXT_texture_from_pixmap backed by buffer objects
[  4075.007] (II) AIGLX: enabled GLX_ARB_create_context_robustness
[  4075.007] (II) AIGLX: Loaded and initialized i965
[  4075.007] (II) GLX: Initialized DRI2 GL provider for screen 0
[  4075.008] (II) intel(0): Setting screen physical size to 508 x 285
[  4075.189] (II) Using input driver 'mouse' for 'Mouse0'
[  4075.189] (**) Option "CorePointer"
[  4075.189] (**) Mouse0: always reports core events
[  4075.189] (**) Option "Protocol" "auto"
[  4075.189] (**) Option "Device" "/dev/sysmouse"
[  4075.189] (**) Mouse0: Protocol: "auto"
[  4075.189] (**) Mouse0: always reports core events
[  4075.189] (==) Mouse0: Emulate3Buttons, Emulate3Timeout: 50
[  4075.189] (**) Option "ZAxisMapping" "4 5 6 7"
[  4075.189] (**) Mouse0: ZAxisMapping: buttons 4, 5, 6 and 7
[  4075.189] (**) Mouse0: Buttons: 7
[  4075.189] (II) XINPUT: Adding extended input device "Mouse0" (type: MOUSE, id 6)
[  4075.189] (**) Mouse0: (accel) keeping acceleration scheme 1
[  4075.189] (**) Mouse0: (accel) acceleration profile 0
[  4075.189] (**) Mouse0: (accel) acceleration factor: 2.000
[  4075.189] (**) Mouse0: (accel) acceleration threshold: 4
[  4075.189] (II) Mouse0: SetupAuto: hw.iftype is 4, hw.model is 0
[  4075.189] (II) Mouse0: SetupAuto: protocol is SysMouse
[  4075.189] (II) Using input driver 'synaptics' for 'Touchpad0'
[  4075.189] (**) Option "SendCoreEvents" "1"
[  4075.189] (**) Option "CorePointer"
[  4075.189] (**) Touchpad0: always reports core events
[  4075.190] (**) Option "Protocol" "psm"
[  4075.190] (**) Option "Device" "/dev/psm0"
[  4075.237] (--) synaptics: Touchpad0: invalid x-axis range.  defaulting to 1615 - 5685
[  4075.237] (--) synaptics: Touchpad0: invalid y-axis range.  defaulting to 1729 - 4171
[  4075.237] (--) synaptics: Touchpad0: invalid pressure range.  defaulting to 0 - 255
[  4075.237] (--) synaptics: Touchpad0: invalid finger width range.  defaulting to 0 - 15
[  4075.237] (**) Option "EmulateTwoFingerMinZ" "7"
[  4075.237] (**) Option "EmulateTwoFingerMinW" "7"
[  4075.238] (**) Option "VertScrollDelta" "-111"
[  4075.238] (**) Option "VertEdgeScroll" "0"
[  4075.238] (**) Option "VertTwoFingerScroll" "1"
[  4075.238] (**) Option "TapButton2" "0"
[  4075.238] (**) Option "PalmDetect" "1"
[  4075.238] (--) synaptics: Touchpad0: synaptics touchpad found
[  4075.238] (--) synaptics: Touchpad0:  Synaptics Touchpad, model: 0
[  4075.238] (--) synaptics: Touchpad0:  Firmware: 8.2
[  4075.238] (--) synaptics: Touchpad0:  Sensor: 1
[  4075.238] (--) synaptics: Touchpad0:  new absolute packet format
[  4075.238] (--) synaptics: Touchpad0:  Touchpad has extended capability bits
[  4075.238] (--) synaptics: Touchpad0:  -> multifinger detection
[  4075.238] (--) synaptics: Touchpad0:  -> palm detection
[  4075.238] (--) synaptics: Touchpad0:  -> pass-through port
[  4075.238] (**) Touchpad0: always reports core events
[  4075.273] (II) XINPUT: Adding extended input device "Touchpad0" (type: TOUCHPAD, id 7)
[  4075.273] (**) synaptics: Touchpad0: (accel) MinSpeed is now constant deceleration 2.5
[  4075.273] (**) synaptics: Touchpad0: (accel) MaxSpeed is now 1.75
[  4075.273] (**) synaptics: Touchpad0: (accel) AccelFactor is now 0.042
[  4075.273] (**) Touchpad0: (accel) keeping acceleration scheme 1
[  4075.273] (**) Touchpad0: (accel) acceleration profile 1
[  4075.273] (**) Touchpad0: (accel) acceleration factor: 2.000
[  4075.273] (**) Touchpad0: (accel) acceleration threshold: 4
[  4075.321] (--) synaptics: Touchpad0: synaptics touchpad found
[  4075.321] (--) synaptics: Touchpad0:  Synaptics Touchpad, model: 0
[  4075.321] (--) synaptics: Touchpad0:  Firmware: 8.2
[  4075.321] (--) synaptics: Touchpad0:  Sensor: 1
[  4075.321] (--) synaptics: Touchpad0:  new absolute packet format
[  4075.321] (--) synaptics: Touchpad0:  Touchpad has extended capability bits
[  4075.321] (--) synaptics: Touchpad0:  -> multifinger detection
[  4075.321] (--) synaptics: Touchpad0:  -> palm detection
[  4075.321] (--) synaptics: Touchpad0:  -> pass-through port
[  4075.321] (II) Using input driver 'kbd' for 'Keyboard0'
[  4075.321] (**) Option "CoreKeyboard"
[  4075.321] (**) Keyboard0: always reports core events
[  4075.321] (**) Keyboard0: always reports core events
[  4075.321] (**) Option "Protocol" "standard"
[  4075.321] (**) Option "XkbRules" "base"
[  4075.321] (**) Option "XkbModel" "pc105"
[  4075.321] (**) Option "XkbLayout" "de"
[  4075.321] (**) Option "XkbVariant" "nodeadkeys"
[  4075.321] (II) XINPUT: Adding extended input device "Keyboard0" (type: KEYBOARD, id 8)
[  4075.360] (II) config/devd: probing input devices...
[  4075.360] (II) config/devd: adding input device (null) (/dev/kbdmux)
[  4075.360] (II) AutoAddDevices is off - not adding device.
[  4075.360] (II) config/devd: kbdmux is enabled, ignoring device atkbd0
[  4075.361] (II) config/devd: adding input device (null) (/dev/sysmouse)
[  4075.361] (II) AutoAddDevices is off - not adding device.
[  4075.361] (II) config/devd: device /dev/psm0 already opened
[  7089.908] (II) config/devd: device /dev/ums0 already opened
 
Okay, I started over with the synclient config. Could it be that this touchpad is not actually a multitouch touchpad? I have been playing around with the EmulateTwoFinger* settings in syclient. With default settings those seem to be wrong. According to the manual they should be values that will be disabling them for real multi touch touchpads, but enabling it for ones that require the emulation to be activated. This is not the case.

Clicking on the touchpad still doesn't work, also the keys above the touchpad still don't work.

EDIT It probably isn't, because it reports "multifinger detection"

EDIT2 Something I noticed, but don't understand is that doing sysctl hw.psm.synaptics.touchpad_off=1 won't disable the touchpad
 
I did, but does such a setup support a way to disable the touchpad when an external USB mouse is attached?
 
Well, the disabling/enabling has very little to do with the actual setup. You can write devd rules for that, for example.
How do you "manually turn it off"? E.g. you can run a script which does it upon a USB mouse attachment.
 
Thanks. Just tried it. I actually thought that using moused means turning off/on all or nothing. Evidently that's not the case. I think I had wrong memories about that then. I used moused before. hw.psm.synaptics.touchpad_off actually works perfectly with moused.

I thought I couldn't cause I can't do it with synclient (since that requires the xorg synaptics driver to be in use).

Thanks. That actually solves it for me. Must have overlooked something, because I used moused until recently.

EDIT: Did you by any chance manage to get a syndaemon style behavior? So disabling it while typing to avoid accidentally touching it.
 
Back
Top