Custom Synaptics Setting Overwritten at Boot

inxi -bz

System:
Kernel: 6.9.3-3-MANJARO arch: x86_64 bits: 64
Desktop: KDE Plasma v: 6.0.5 Distro: Manjaro Linux
Machine:
Type: Desktop System: Dell product: OptiPlex 7050 v: N/A
serial:
Mobo: Dell model: 055H3G v: A01 serial: UEFI: Dell
v: 1.26.0 date: 08/20/2023
CPU:
Info: quad core Intel Core i7-7700 [MCP] speed (MHz): avg: 800
min/max: 800/4200
Graphics:
Device-1: Intel HD Graphics 630 driver: i915 v: kernel
Display: x11 server: X.Org v: 21.1.13 with: Xwayland v: 24.1.0 driver: X:
loaded: modesetting dri: iris gpu: i915 resolution: 3840x2160~60Hz
API: OpenGL v: 4.6 compat-v: 4.5 vendor: intel mesa v: 24.0.9-manjaro1.1
renderer: Mesa Intel HD Graphics 630 (KBL GT2)

Hello everyone,

I have a problem with my touchpad configuration on my Linux system, and I hope someone here can help.

Problem Description

I have a “dead space” at the bottom of my trackpad where I cannot start my finger. Movement is accepted if I move my finger down into this area, but it will not start movement from there. I assume this is related to the rocker buttons under that portion of the trackpad. However, I do not use those physical buttons and would like to recover that portion of the trackpad.

What I Have Tried

I found the setting to edit the Synaptics driver settings in /etc/X11/xorg.conf.d/99-synaptics.conf and confirmed the settings using synclient -l.

One setting that seemed promising was RightButtonAreaTop. Manually changing it to a high value like 9999 using synclient RightButtonAreaTop=9999 works perfectly.

However, when I set this in /etc/X11/xorg.conf.d/99-synaptics.conf, it reverts to its original value after loading the desktop.

Here is the content of my /etc/X11/xorg.conf.d/99-synaptics.conf file:

Section "InputClass"
    Identifier "touchpad"
    Driver "synaptics"
    MatchIsTouchpad "on"
    Option "TapButton1" "1"
    Option "TapButton2" "3"
    Option "TapButton3" "2"
    Option "VertEdgeScroll" "off"
    Option "VertTwoFingerScroll" "on"
    Option "HorizEdgeScroll" "off"
    Option "HorizTwoFingerScroll" "on"
    Option "CircularScrolling" "off"
    Option "CircScrollTrigger" "2"
    Option "EmulateTwoFingerMinZ" "40"
    Option "EmulateTwoFingerMinW" "8"
    Option "CoastingSpeed" "10"
    Option "CoastingFriction" "10"
    Option "FingerLow" "30"
    Option "FingerHigh" "50"
    Option "MaxTapTime" "125"
    Option "MaxSpeed" "2"
    Option "MinSpeed" "1"
    Option "AccelFactor" "0.02"
    Option "RightButtonAreaTop" "9999"
EndSection

I also checked for other configuration files that might be conflicting, such as /usr/share/X11/xorg.conf.d/70-synaptics.conf:

Section "InputClass"
    Identifier "touchpad catchall"
    Driver "synaptics"
    MatchIsTouchpad "on"
EndSection

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

Section "InputClass"
    Identifier "Disable clickpad buttons on Apple touchpads"
    MatchProduct "Apple|bcm5974"
    MatchDriver "synaptics"
    Option "SoftButtonAreas" "0 0 0 0 0 0 0 0"
EndSection

I have commented out conflicting lines and tried various configurations, but the setting still gets overwritten.

Temporary Solution

As a temporary workaround, I created a .desktop file to set the value at startup:

[Desktop Entry]
Type=Application
Exec=synclient RightButtonAreaTop=9999
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Set Touchpad Settings
Comment=Apply custom touchpad settings at startup

This works, but I would prefer a permanent solution that does not rely on autostart scripts.

Does anyone know what could be overwriting my Synaptics settings at boot?
Is there a way to make the RightButtonAreaTop setting permanent without using an autostart script?
Is setting RightButtonAreaTop even the right config to be using for this purpose? (i tried all the others that sounded kinda possible but this was the only one i found that worked)

Any help or guidance would be greatly appreciated!

Hi @jackdinn,

Sounds like it isn’t getting applied, not necessarily reset. Can you confirm whether /etc/X11/xorg.conf.d/99-synaptics.conf exists after a reboot?

O yea, The file /etc/X11/xorg.conf.d/99-synaptics.conf exists after a reboot.

I use it to set my synaptic settings now that the synaptic GUI settings have been removed.
https://forum.manjaro.org/t/synaptics-trackpad-setting-have-gone-after-latest-stable-update-kde/161475

Mine looks like this. These settings are “dropped-in” and take precedence over the default. I would notice straight away if they were not being applied.

âť±cat /etc/X11/xorg.conf.d/99-synaptics.conf
Section "InputClass"
    Identifier "touchpad"
    Driver "synaptics"
    MatchIsTouchpad "on"
        Option "TapButton1" "1"
        Option "TapButton2" "3"
        Option "TapButton3" "2"
        Option "VertEdgeScroll" "off"
        Option "VertTwoFingerScroll" "on"
        Option "HorizEdgeScroll" "off"
        Option "HorizTwoFingerScroll" "on"
        Option "CircularScrolling" "off"
        Option "CircScrollTrigger" "2"
        Option "EmulateTwoFingerMinZ" "40"
        Option "EmulateTwoFingerMinW" "8"
        Option "CoastingSpeed" "10"
        Option "CoastingFriction" "10"
        Option "FingerLow" "30"
        Option "FingerHigh" "50"
        Option "MaxTapTime" "125"
        Option "MaxSpeed" "2"
        Option "MinSpeed" "1"
        Option "AccelFactor" "0.02"
        Option "RightButtonAreaTop" "9999"
#        Option "SoftButtonAreas" "50% 0 0 0 0 0 0 0"   # Disable SoftButtonAreas"
EndSection

I tried editing the Option "SoftButtonAreas" "50% 0 0 0 0 0 0 0" # Disable SoftButtonAreas but my desktop environment failed to load completely when i did that so i remarked it out. Im just guessing at configs really atm. No idea why “RightButtonAreaTop” works at all but it does.

OK, honestly, then it only sounds as if the that specific configuration isn’t applied. And I have no idea why.

But, I have absolutely no idea which DE you use, but after studying

https://wiki.archlinux.org/title/Lenovo_IdeaPad_U430_Touch

…it would seem the setting((s) can be overridden. So, if using Xfce or one of the GTK DEs, let’s see if it helps disabling that “feature”. Run the following:

gsettings set org.gnome.settings-daemon.plugins.mouse active false

Reboot and see if that helps!

While I’m not an expert on X11 touchpad configuration, I do know that some Linux system utilities will overwrite configuration files that contain invalid entries or don’t adhere to the right format. My guess would be that 9999 isn’t a valid entry because it’s larger than expected, and so it gets overwritten with something that is valid when loaded.

A fix may be to figure out the smallest value that gives you the behaviour that you want, and use that instead. I’d guess this value would be hardware specific, so you’ll have to do some experimenting with synclient.

1 Like

Yea you do, it was the very first thing i wrote in my original post. (all my inxi)

KDE. (so i didn’t try it?)

I get ya, but it does not seem that way as it does over write it enough to work, i.e. its not putting it back to the default because that would mean it would not work on boot even with the autostart, but it does work when executed by autostart or manually.

I shall give it a try but worse comes to the worse and i shall just leave it in the autostart which is a pitty as i know there must be a way.

It does keep the setting, this is after a reboot with it in the autostart.

synclient -l
âť±synclient -l
Parameter settings:
    LeftEdge                = 61
    RightEdge               = 1474
    TopEdge                 = 47
    BottomEdge              = 832
    FingerLow               = 30
    FingerHigh              = 50
    MaxTapTime              = 125
    MaxTapMove              = 77
    MaxDoubleTapTime        = 180
    SingleTapTimeout        = 180
    ClickTime               = 100
    EmulateMidButtonTime    = 0
    EmulateTwoFingerMinZ    = 40
    EmulateTwoFingerMinW    = 8
    VertScrollDelta         = 35
    HorizScrollDelta        = 35
    VertEdgeScroll          = 0
    HorizEdgeScroll         = 0
    CornerCoasting          = 0
    VertTwoFingerScroll     = 1
    HorizTwoFingerScroll    = 1
    MinSpeed                = 1
    MaxSpeed                = 2
    AccelFactor             = 0.02
    TouchpadOff             = 0
    LockedDrags             = 0
    LockedDragTimeout       = 5000
    RTCornerButton          = 0
    RBCornerButton          = 0
    LTCornerButton          = 0
    LBCornerButton          = 0
    TapButton1              = 1
    TapButton2              = 3
    TapButton3              = 2
    ClickFinger1            = 1
    ClickFinger2            = 1
    ClickFinger3            = 1
    CircularScrolling       = 0
    CircScrollDelta         = 0.1
    CircScrollTrigger       = 2
    CircularPad             = 0
    PalmDetect              = 0
    PalmMinWidth            = 10
    PalmMinZ                = 200
    CoastingSpeed           = 10
    CoastingFriction        = 10
    PressureMotionMinZ      = 30
    PressureMotionMaxZ      = 160
    PressureMotionMinFactor = 1
    PressureMotionMaxFactor = 1
    GrabEventDevice         = 0
    TapAndDragGesture       = 1
    AreaLeftEdge            = 0
    AreaRightEdge           = 0
    AreaTopEdge             = 0
    AreaBottomEdge          = 0
    HorizHysteresis         = 8
    VertHysteresis          = 8
    ClickPad                = 1
    RightButtonAreaLeft     = 767
    RightButtonAreaRight    = 0
    RightButtonAreaTop      = 9999
    RightButtonAreaBottom   = 0
    MiddleButtonAreaLeft    = 0
    MiddleButtonAreaRight   = 0
    MiddleButtonAreaTop     = 0
    MiddleButtonAreaBottom  = 0

But lets see what i can find by altering the value a bit first.

Nah, I didn’t. Mostly because my brain is like a sieve sometimes when it suits him

:smile: No problem :smile:

Well, not exactly. synclient allows the setting. synclient is not what it loading the configuration files - that would be X.

More importantly, I had a look at the documentation and I notice that there’s some conflicting settings, specifically SoftButtonAreas in /usr/share/X11/xorg.conf.d/70-synaptics.conf conflicts with RightButtonAreas. It seems that in general the SoftButtonAreas value is the one that’s intended to be modified, with values like RightButtonAreas for viewing what the changes are.

One question I do have is what are you trying to do? Because to me the config looks like you’re trying to make the right click soft button into the entire right edge of the touchpad, which doesn’t necessarily mesh with what you say you’re trying to do, which looks more like you want no soft buttons - in which case, I think you are supplying an invalid value, which causes a bug disabling the right soft button, which just so happens to be the behaviour that you want.

In any case, the options as I see them, assuming you want to disable soft buttons, are as follows:

  1. In Gnome Settings or similar, if your touchpad supports it, change Secondary Click to Two Finger Push. That should disable soft buttons.
  2. In /etc/X11/xorg.conf.d/99-synaptics.conf, delete the RightButtonAreaTop config and add Option "SoftButtonAreas" "0 0 0 0 0 0 0 0" to disable soft buttons.
2 Likes

I found it. It was a stupid syntax mistake on my part.

i should have had

Section "InputClass"
    Identifier "touchpad"
    Driver "synaptics"
    MatchIsTouchpad "on"
        Option "TapButton1" "1"
        Option "TapButton2" "3"
        Option "TapButton3" "2"
        Option "VertEdgeScroll" "off"
        Option "VertTwoFingerScroll" "on"
        Option "HorizEdgeScroll" "off"
        Option "HorizTwoFingerScroll" "on"
        Option "CircularScrolling" "off"
        Option "CircScrollTrigger" "2"
        Option "EmulateTwoFingerMinZ" "40"
        Option "EmulateTwoFingerMinW" "8"
        Option "CoastingSpeed" "10"
        Option "CoastingFriction" "10"
        Option "FingerLow" "30"
        Option "FingerHigh" "50"
        Option "MaxTapTime" "125"
        Option "MaxSpeed" "2"
        Option "MinSpeed" "1"
        Option "AccelFactor" "0.02"
        Option "SoftButtonAreas" "50% 0 0 0 0 0 0 0"   # Disable SoftButtonAreas
EndSection

but i had

Option "Option "SoftButtonAreas" "50% 0 0 0 0 0 0 0"   # Disable SoftButtonAreas

Very very dumb copy/paste mistake of mine, sorry chaps.

1 Like

This topic was automatically closed 36 hours after the last reply. New replies are no longer allowed.