Subject: Running xorgwizard changes option settings for synaptics touchpad driver.
This is a bug in xorgwizard that affects Slacko 5.3.3 (and any other Puppy that uses an Xorg X server version 1.9). This won't affect future Slackos or other Puppies that use an Xorg X server version 1.10.0 or newer, or a version older than 1.9.
o To reproduce problem:
1. Assuming that your PC uses the Xorg X server and the synaptics driver, boot Slacko 5.3.3 without a save file and try your touchpad, noticing its speed and acceleration.
2. Menu -> Shutdown -> Exit to prompt
3. Run xorgwizard and make your usual choices.
4. Run xwin and try your touchpad. Notice that the speed and/or acceleration will have changed.
o Background:
In June and August of 2010, the developers at X.org made significant changes to the way that the synaptics touchpad driver handles acceleration. These changes were first released in version 1.3.0 of the synaptics driver on August 31, 2010 (See
synaptics-1.3-branch), in the same month that Xorg X server 1.9.0 was released. Because of these changes, the values for the "AccelFactor", "MinSpeed", and "MaxSpeed" options previously specified in xorg.conf for use with earlier versions of the synaptics driver were no longer appropriate. Using those values with the new driver would make the pointer movement noticeably sluggish.
Puppy's xorgwizard-automatic script handles these changes by adjusting the "Synaptics Mouse" section of xorg.conf that it creates according to the version of the Xorg X server being used.
Slacko's /etc/DISTRO_SPECS file defines DISTRO_XORG_AUTO='yes', and the Xorg X server in Slacko 5.3.3 is version 1.9.5. So, when xwin sees that the xorg.conf file needs to be created, and that an Xorg X server version 1.7.0 or newer is to be used, it runs xorgwizard-automatic instead of xorgwizard. So far, this is good.
When xorgwizard-automatic detects a supported touchpad, and sees that an Xorg X server version 1.9.0 or newer is to be used, it creates an "InputDevice" section in xorg.conf for the "Synaptics Mouse", which doesn't load any options for the driver. So the driver uses its default settings. This is also good.
o The problem:
But, if the user decides to run xorgwizard (not xorgwizard-automatic) to choose a different screen resolution or whatever, xorgwizard behaves differently. This is because, when creating the "Synaptics Mouse" section, xorgwizard compares the Xorg X server version to 1.10.0, not 1.9.0 as xorgwizard-automatic does.
When xorgwizard detects a supported touchpad, and sees that an Xorg X server version older than 1.10.0 is used, it creates an "InputDevice" section in xorg.conf for the "Synaptics Mouse", which loads various options for the driver. Some of these settings are very different from the driver's default settings, since they were originally used with older versions of the synaptics driver. The user will likely notice that the pointer moves much more slowly than previously. This is not good.
The fix is simply to change this line in xorgwizard:
Code: Select all
if vercmp $XORGVER lt 1.10.0;then #110701
to:
Code: Select all
if vercmp $XORGVER lt 1.9.0; then #110701, 121014
(Having an XOrg X server 1.9.0 or greater is not an absolute guarantee that the synaptics driver is 1.3.0 or greater, or vice versa, but it is highly probable. Of course, there was a brief window in late August of 2010 when someone could have grabbed the latest versions and got the X server 1.9.0 and the old synaptics 1.2.0 driver, but I'm not aware of any Puppies with that unlikely combination.)
Note that if the user ran flsynclient before ever running xorgwizard, didn't adjust the acceleration, but did click
Save, the good values will have been saved and should be restored when rebooted. In this case, one might reasonably expect that even if the user later runs xorgwizard, the user would experience a sluggish pointer only briefly until the load-touchpad-settings script ran and restored the good settings.
Unfortunately, that is not the case. Although the good settings are restored, the actual speed and/or acceleration of the touchpad are not the same as they were when first booted. Without digging deeply into the source code, my best guess is that one or more internal values are now calculated when the driver first starts, based on the speed and acceleration values at that time, and those internal values don't get recalculated when MinSpeed, MaxSpeed, and AccelFactor values later get reset. That's just a guess at what's happening, but whatever is happening, the bottom line is that if you change the values that are used when the driver is first loaded, values loaded later will cause different behavior than the same values did previously.
Let me clarify. Although the values saved by flsynclient (that previously worked well before the user ran xorgwizard) will result in different behavior after the user runs xorgwizard, it may be possible for the user to then use flsynclient again and achieve acceptable (but not ideal) behavior by changing the MinSpeed and Max Speed values. And, if saved, those new values will continue to work on future restarts of X, unless the synaptics options in xorg.cong are changed again (as would happen if the user ran xorgwizard-automatic again).
Unfortunately, any attempt to adjust the acceleration with flsynclient will probably result in less acceleration than desired. This is because flsynclient was designed for the older versions of the synaptics driver, which used smaller values for "AccelFactor". The limit in flsynclient is 0.01, but a typical value for use with the new driver (when using a Synaptics touchpad) is 0.04. (If the value is
already above flsynclient's 0.01 limit, flsynclient will save that value OK, but any attempt to change the value will result in a value of 0.01 or less.) If a user runs into this problem, it can be fixed with synclient, like so:
(If one has time for such things, one can observe some of the confusing behavior of the new synaptics driver by setting the MinSpeed option in xorg.conf to any value other than one. (To see this, the /root/.flSynclient file, if any, will need to be temporarily removed or hidden to prevent the values from being overwritten by load-touchpad-settings after restarting X.) After X is restarted,
synclient -l will list the current values. Confusingly, the values that were given in xorg.conf for MinSpeed and MaxSpeed will have been changed by the driver. They have been multiplied by the reciprocal of MinSpeed. (Looking at the source code, I see that MinSpeed isn't actually multiplied by its reciprocal, but is simply set to one, which is of course the same result.) Is this any way to design a user-friendly interface?
)
o Not a problem, but while we are in the neighborhood:
As a side note, the following line that appears in three places in both xorgwizard and xorgwizard-automatic is now unnecessary:
I believe it was used with Linux 2.4 kernels. The line that follows it sets the "auto-dev" protocol, which automatically sets a /dev/input/event* device when used with 2.6 and newer kernels.
So recent Xorg X servers (including Xorg 1.9.5 in Slacko) mostly ignore the
Option "Device" "/dev/psaux" line. But for some reason the Xorg 1.11.0 X server is confused by this line, if it finds it in xorg.conf, and will fail. But this is NOT a problem for any Puppy, since neither xorgwizard nor xorgwizard-automatic put that line in xorg.conf when an Xorg X server 1.10.0 or newer is to be used. So no change to Puppy needs to be made for that.