You are not logged in.

#1 2022-01-13 00:22:28

Dieter@be
Forum Fellow
From: Belgium
Registered: 2006-11-05
Posts: 2,000
Website

touchpad "button click emulation" zones are very unfair

Hi! I have a dell xps 17 laptop - 9710 model. it has a quite big touchpad.
after lots of experimenting with clicking around in a xorg-xev window, I think this is a very accurate depiction of which mouse buttons are triggered on which zones of my touchpad:
okTZCxp.png
needless to say, i'ld like the zoning to be a bit more fair. a 1/3 split of the clickable area for each of the 3 buttons seems more appropriate.
i've been doing some googling which gave me information about gestures, and tried gnome-tweaks but it only allows to switch between zone-based vs amount-of-fingers-based to decide which mouse button to click.
(ie https://wayland.freedesktop.org/libinpu … ck-method)
i haven't found anything about how to change the boundaries of the zones. the list of libinput options also doesn't seem to include an option to change the zones
(https://wayland.freedesktop.org/libinpu … ation.html)
i use the libinput driver, not synaptics, as that is the most recent driver recommended on arch wiki.  i use the default config right now.

any ideas would be appreciated!

$ libinput list-devices
(...)
Device:           DELL0A5D:00 04F3:311C Touchpad
Kernel:           /dev/input/event16
Group:            8
Seat:             seat0, default
Size:             150x88mm
Capabilities:     pointer gesture
Tap-to-click:     disabled
Tap-and-drag:     enabled
Tap drag lock:    disabled
Left-handed:      disabled
Nat.scrolling:    disabled
Middle emulation: disabled
Calibration:      n/a
Scroll methods:   *two-finger edge 
Click methods:    *button-areas clickfinger 
Disable-w-typing: enabled
Accel profiles:   flat *adaptive
Rotation:         n/a
(...)
$ xinput list-props 'DELL0A5D:00 04F3:311C Touchpad'
Device 'DELL0A5D:00 04F3:311C Touchpad':
	Device Enabled (173):	1
	Coordinate Transformation Matrix (175):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	libinput Tapping Enabled (331):	0
	libinput Tapping Enabled Default (332):	0
	libinput Tapping Drag Enabled (333):	1
	libinput Tapping Drag Enabled Default (334):	1
	libinput Tapping Drag Lock Enabled (335):	0
	libinput Tapping Drag Lock Enabled Default (336):	0
	libinput Tapping Button Mapping Enabled (337):	1, 0
	libinput Tapping Button Mapping Default (338):	1, 0
	libinput Natural Scrolling Enabled (309):	0
	libinput Natural Scrolling Enabled Default (310):	0
	libinput Disable While Typing Enabled (339):	1
	libinput Disable While Typing Enabled Default (340):	1
	libinput Scroll Methods Available (311):	1, 1, 0
	libinput Scroll Method Enabled (312):	1, 0, 0
	libinput Scroll Method Enabled Default (313):	1, 0, 0
	libinput Click Methods Available (341):	1, 1
	libinput Click Method Enabled (342):	1, 0
	libinput Click Method Enabled Default (343):	1, 0
	libinput Middle Emulation Enabled (318):	0
	libinput Middle Emulation Enabled Default (319):	0
	libinput Accel Speed (320):	0.000000
	libinput Accel Speed Default (321):	0.000000
	libinput Accel Profiles Available (322):	1, 1
	libinput Accel Profile Enabled (323):	1, 0
	libinput Accel Profile Enabled Default (324):	1, 0
	libinput Left Handed Enabled (325):	0
	libinput Left Handed Enabled Default (326):	0
	libinput Send Events Modes Available (294):	1, 1
	libinput Send Events Mode Enabled (295):	0, 0
	libinput Send Events Mode Enabled Default (296):	0, 0
	Device Node (297):	"/dev/input/event16"
	Device Product ID (298):	1267, 12572
	libinput Drag Lock Buttons (327):	<no items>
	libinput Horizontal Scroll Enabled (328):	1
	libinput Scrolling Pixel Distance (329):	15
	libinput Scrolling Pixel Distance Default (330):	15

< Daenyth> and he works prolifically
4 8 15 16 23 42

Offline

#2 2022-01-13 02:00:00

Dieter@be
Forum Fellow
From: Belgium
Registered: 2006-11-05
Posts: 2,000
Website

Re: touchpad "button click emulation" zones are very unfair

i was just reading https://wayland.freedesktop.org/libinpu … re-buttons and it seems like the size of the areas cannot be changed, even though in my case the zones really seem smaller than what they describe there.


< Daenyth> and he works prolifically
4 8 15 16 23 42

Offline

#3 2023-12-26 00:37:42

marcmerlin
Member
Registered: 2023-12-26
Posts: 2

Re: touchpad "button click emulation" zones are very unfair

Dieter@be wrote:

i was just reading https://wayland.freedesktop.org/libinpu … re-buttons and it seems like the size of the areas cannot be changed, even though in my case the zones really seem smaller than what they describe there.

I know it's been a while, just got a Dell 9370 and moving from thinkpad trackpoint I loved so much, to touchpad :-/

First, I'm not clear on how you disable middle button emulation. If we're talking about this
merlin:~$ xinput list-props 'VEN_06CB:00 06CB:CE7E Touchpad' |grep -i middle
    Synaptics Middle Button Timeout (349):    0

it does default to enabled somehow, not sure where. I turn it off with
synclient EmulateMidButtonTime=0

but I guess by then it's too late and middle click at the bottom is gone?  On my laptop, that '2' zone in your graph does not seem to be there at all.

One easy way to debug is
xev 2>&1 | grep --color=auto -i button

1) can you help me figure out how to have that middle button click at the bottom, work? even if it's small?
2) I have something else that may work for you
```
# Synaptics Edges (343):    70, 1700, 56, 983
# middle seems to work, max bottom is 860, right is maybe 2048?
synclient MiddleButtonAreaTop=60
# I would love to go past 860 to
synclient MiddleButtonAreaBottom=400
# narrow band top
#synclient MiddleButtonAreaLeft=800
#synclient MiddleButtonAreaRight=1200
# wide top band
synclient MiddleButtonAreaLeft=100
synclient MiddleButtonAreaRight=1600
```

this allows you to use part of the top of your touchpad as middle click. Unfortunately on my laptop
a) the very top is not clickable at all (physically it only clicks in the middle or bottom)
b) I cannot move the top and bottom to 750 to 850, which is what I would want, but it might work on yours

Mine is
```merlin:~$ xinput list-props 'VEN_06CB:00 06CB:CE7E Touchpad'
Device 'VEN_06CB:00 06CB:CE7E Touchpad':
    Device Enabled (179):    1
    Coordinate Transformation Matrix (181):    1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (313):    1
    Device Accel Constant Deceleration (314):    2.500000
    Device Accel Adaptive Deceleration (315):    1.000000
    Device Accel Velocity Scaling (316):    12.500000
    Synaptics Edges (343):    70, 1700, 56, 983
    Synaptics Finger (344):    25, 30, 0
    Synaptics Tap Time (345):    180
    Synaptics Tap Move (346):    90
    Synaptics Tap Durations (347):    180, 180, 100
    Synaptics ClickPad (348):    1
    Synaptics Middle Button Timeout (349):    0
    Synaptics Two-Finger Pressure (350):    282
    Synaptics Two-Finger Width (351):    7
    Synaptics Scrolling Distance (352):    41, 41
    Synaptics Edge Scrolling (353):    0, 0, 0
    Synaptics Two-Finger Scrolling (354):    1, 0
    Synaptics Move Speed (355):    1.000000, 1.750000, 0.150000, 0.000000
    Synaptics Off (356):    0
    Synaptics Locked Drags (357):    0
    Synaptics Locked Drags Timeout (358):    5000
    Synaptics Tap Action (359):    3, 7, 0, 6, 0, 0, 0
    Synaptics Click Action (360):    1, 3, 2
    Synaptics Circular Scrolling (361):    0
    Synaptics Circular Scrolling Distance (362):    0.100000
    Synaptics Circular Scrolling Trigger (363):    0
    Synaptics Circular Pad (364):    0
    Synaptics Palm Detection (365):    1
    Synaptics Palm Dimensions (366):    2, 50
    Synaptics Coasting Speed (367):    20.000000, 50.000000
    Synaptics Pressure Motion (368):    30, 160
    Synaptics Pressure Motion Factor (369):    1.000000, 1.000000
    Synaptics Grab Event Device (370):    0
    Synaptics Gestures (371):    1
    Synaptics Capabilities (372):    1, 0, 0, 1, 1, 0, 0
    Synaptics Pad Resolution (373):    12, 12
    Synaptics Area (374):    0, 0, 0, 0
    Synaptics Soft Button Areas (375):    885, 0, 851, 0, 100, 1800, 0, 400
    Synaptics Noise Cancellation (376):    10, 10
    Device Product ID (306):    1739, 52862
    Device Node (305):    "/dev/input/event8"
```

Thanks, Marc

Offline

#4 2023-12-27 15:46:48

marcmerlin
Member
Registered: 2023-12-26
Posts: 2

Re: touchpad "button click emulation" zones are very unfair

ok, I have good news, I was able to make the bottom pad work, but doing it manually with synclient is error prone because it's not trivial to get the right coordinates.

merlin:~$ cat /etc/X11/xorg.conf.d/70-synaptics.conf
# https://wiki.archlinux.org/title/Touchp … figuration
# https://www.dell.com/support/kbdoc/en-u … -issue-fix

Section "InputClass"
    Identifier "touchpad"
    Driver "synaptics"
    MatchIsTouchpad "on"
       #Option "TapButton1" "1"
       #Option "TapButton2" "3"
       #Option "TapButton3" "2"
       #Option "VertEdgeScroll" "on"
       #Option "VertTwoFingerScroll" "on"
       #Option "HorizEdgeScroll" "on"
       #Option "HorizTwoFingerScroll" "on"
       #Option "CircularScrolling" "on"
       #Option "CircScrollTrigger" "2"
       #Option "EmulateTwoFingerMinZ" "40"
       #Option "EmulateTwoFingerMinW" "8"
       #Option "CoastingSpeed" "0"
       #Option "FingerLow" "30"
       #Option "FingerHigh" "50"
       #Option "MaxTapTime" "125"
       #Option "SendEventsMode" "disabled-on-external-mouse"
       #Option "Tapping" "True"
       #Option "AccelProfile" "adaptive"
       #Option "AccelSpeed" "0.3"
       #Option "TappingDrag" "True"
       #Option "HorizontalScrolling" "True"
       #Option "ScrollMethod" "edge"
       # https://wiki.archlinux.org/title/Touchpad_Synaptics
       # left 30% middle 40% (30% to 69%) right 30% (from 70% to 0=inf)
       # buttons go from 82% down to 0=inf
    Option     "SoftButtonAreas"  "70% 0 82% 0 30% 69% 82% 0"
EndSection


However you can do this with synclient too once you know the actual coordinates that get computed by the xorg config, so you can change them at runtime or use synclient only.  On my Dell XPS 17 9370, I got these numbers
for i in 1 2; do
synclient  RightButtonAreaLeft=1239
synclient  RightButtonAreaRight=0
synclient  RightButtonAreaTop=851
synclient  RightButtonAreaBottom=0
synclient  MiddleButtonAreaLeft=531
synclient  MiddleButtonAreaRight=1221
synclient  MiddleButtonAreaTop=851
synclient  MiddleButtonAreaBottom=0
done

the loop is to reset values that may have got rejected the first time around because of coordinate conflicts.
Hope this helps

Offline

Board footer

Powered by FluxBB