Created attachment 48804 [details] Touchpad configuration After upgrading from x11-drivers/xf86-input-synaptics-1.2.1 to x11-drivers/xf86-input-synaptics-1.4.0 I can not configure touchpad sensitivity properly. I understand that starting from 1.3.0 a new acceleration algorithm was implemented. However no matter what settings I try for MinSpeed/MaxSpeed/AccelFactor it seems there is a certain minimum speed imposed by the driver. This minimum speed is too fast, and makes it difficult to select or click on small objects. Actions which are very difficult to perform with 1.4.0 compared to 1.2.1 before are selecting text (to single character precision, e.g. to include the first character of a word but not the preceding space) and clicking window borders for resizing windows in horizontal or vertical direction (these are often only a few pixels wide). My current settings are as follows: - MinSpeed = 1 - MaxSpeed = 10 - AccelFactor = 0.01 With these settings the minimum speed of the touchpad seems to be about 1:1. By this I mean that if I move my finger *very* slowly across the touchpad, left-edge to right-edge, this will also move the cursor from the left-edge of the screen to the right edge of the screen. This would be a nice speed if I was moving my finger at a moderate speed. but when I'm trying to make a precise selection it is way too fast. I can tell that the settings are working because I am able to make the mouse move even faster. For example with the following settings: - MinSpeed = 1 - MaxSpeed = 10 - AccelFactor = 1 the mouse still moves 1:1 when moving slowly, but it races the screen as soon as I move my finger a bit faster. From this I conclude that the accelfactor setting is working. However with both (either) of the following settings: - MinSpeed = 0.00001 - MaxSpeed = 1 - AccelFactor = 1 --- or ---- - MinSpeed = 0.00001 - MaxSpeed = 1 - AccelFactor = 0.00001 the cursor still moves 1:1 across the screen, even when I move my finger very slowly. This leads me to believe that there is some sort of minimum speed being imposed. Also I noticed what I can only describe as a sort of 'lag' in the input, but only at the start of a movement. Example: When I am moving my finger to the right very slowly the cursor will follow my finger very nicely. If I stop moving my finger the cursor will stop at the exact same moment. If I now start moving my finger in the opposite direction (i.e. left) it takes an ever so small moment before the cursor responds, e.g. I can move my finger a tiny bit to the left before the cursor moves to the left. After that it again follows my finger good. All this is done without lifting my finger from the touchpad. Final note: testing with the previous version (1.2.1) will be difficult because it seems to no longer compile against newer versions of X(org-server). I initially skipped upgrading to 1.3.0 because I did not like the feel of the acceleration, and at the time I did not have the time/will to figure out how to configure the new version and so I stuck to 1.2.1. However I am now forced to upgrade because 1.2.1 no longer works with current xorg-server.
Created attachment 48805 [details] Xorg log
Software versions: x11-base/xorg-server-1.10.2 x11-drivers/xf86-input-synaptics-1.4.0 x11-drivers/xf86-input-evdev-2.6.0 Hardware: Dell XPS 15 (L502x) /proc/bus/input/devices: I: Bus=0011 Vendor=0002 Product=0007 Version=01b1 N: Name="SynPS/2 Synaptics TouchPad" P: Phys=isa0060/serio1/input0 S: Sysfs=/devices/platform/i8042/serio1/input/input10 U: Uniq= H: Handlers=mouse1 event10 B: PROP=9 B: EV=b B: KEY=6420 30000 0 0 0 0 B: ABS=260800011000003
Allow me to answer by citing myself from a commit which should have made it into your synaptics man page: --- Acceleration is mostly handled outside the driver, thus the driver will translate MinSpeed into constant deceleration and adapt MaxSpeed at startup time. This ensures you can use the other acceleration profiles, albeit without pressure motion. However the numbers at runtime will likely be different from any options you may have set. --- See http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/commit/?id=f2f19be03d62b45e51e7fa55b24ed14fec3ba4d2 It _should_ be in the 1.4.0 man page, but I haven't checked. I should add that there indeed exists a lower bound, determined my the "adaptive deceleration" feature. From man xorg.conf: Option "ConstantDeceleration" "real" Makes the pointer go deceleration times slower than normal. Most useful for high-resolution devices. Option "AdaptiveDeceleration" "real" Allows to actually decelerate the pointer when going slow. At most, it will be adaptive deceleration times slower. Enables precise pointer placement without sacrificing speed. The AD is a lower bound defined reciprocally, i.e. you have to set it to 100 to _allow to_ slow down by 100. The profile (which is influenced by the settings you mention) has to do that, too, to become effective. All these have properties too. I see this is unfortunate, but short of dumping the driver's accel settings this is the price to pay. Perhaps we could make this more visible, I'm open to suggestions on how to handle this.
(In reply to comment #3) > I see this is unfortunate, but short of dumping the driver's accel settings > this is the price to pay. Perhaps we could make this more visible, I'm open to > suggestions on how to handle this. we can either just dump the stuff from the driver, or we can expose it through synclient as new parameters. Either way, if we leave the options in place and the synclient interface, we shouldn't change the behaviour for the same settings. What would the driver need to expose in terms of accel settings?
(In reply to comment #4) > (In reply to comment #3) > > I see this is unfortunate, but short of dumping the driver's accel settings > > this is the price to pay. Perhaps we could make this more visible, I'm open to > > suggestions on how to handle this. > > we can either just dump the stuff from the driver, or we can expose it through > synclient as new parameters. Either way, if we leave the options in place and > the synclient interface, we shouldn't change the behaviour for the same > settings. To achieve that, we could just set AD to some high value to it doesn't interfere. > What would the driver need to expose in terms of accel settings? Actually, just the pressure-dependent stuff. AD could serve as MinSpeed replacement, the acceleration factor mimics MaxSpeed. CD could be used to get AD=1, Accel = MaxSpeed/MinSpeed normalization. I would have done it that way initially if it wasn't for that: https://bugs.kde.org/show_bug.cgi?id=235630 Essentially, the current DEs (didn't check with latest gnome) spoil the show, but at least that affects everyone.
I meant to say, every device, not just synaptics. Still it's more nasty there.
Created attachment 50573 [details] [review] An untested patch This is roughly how I'd handle it. It leans towards more honesty, what might counter convenience but at least won't fail in a hidden manner.
This is a mass change of bugs. Bugs assigned to me that haven't been updated in the last 3 years are closed as WONTFIX, because, well, let's at least be honest about it. Please do not re-open unless you have a really good reason to do so (e.g. you're fixing it yourself). If it hasn't been fixed in the last 3 years, it probably won't be fixed anytime soon either. Sorry.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.