Synaptics Touchpad no right click (FIXED)

Using applications, configuring, problems
Message
Author
npierce
Posts: 858
Joined: Tue 29 Dec 2009, 01:40

#21 Post by npierce »

OK, I see no Synaptics related errors in Xorg.0.log. And nothing in the synaptics driver configuration in xorg.conf looks like it would cause the problem you are seeing.

I've taken a look at the source code for the 1.6.2 synaptics driver, and there is definitely code in there to support setting "SoftButtonAreas".

So I am going to guess that it is being initialized properly, then being changed later.

The fact that it worked one time is consistent with that guess.

Please post the output of this command (note the leading dot and capital 'S' in the filename):

Code: Select all

cat /root/.flSynclient
Unless it says "No such file or directory", hide the file with this command:

Code: Select all

mv /root/.flSynclient /root/.flSynclient.hid
Then restart the X server. and try the button.

markreaves
Posts: 41
Joined: Sat 11 Sep 2010, 21:50

#22 Post by markreaves »

npierce wrote:OK, I see no Synaptics related errors in Xorg.0.log. And nothing in the synaptics driver configuration in xorg.conf looks like it would cause the problem you are seeing.

I've taken a look at the source code for the 1.6.2 synaptics driver, and there is definitely code in there to support setting "SoftButtonAreas".

So I am going to guess that it is being initialized properly, then being changed later.

The fact that it worked one time is consistent with that guess.

Please post the output of this command (note the leading dot and capital 'S' in the filename):

Code: Select all

cat /root/.flSynclient
Unless it says "No such file or directory", hide the file with this command:

Code: Select all

mv /root/.flSynclient /root/.flSynclient.hid
Then restart the X server. and try the button.
Right click is working! Thank you so much for this. However the speed of the cursor is very very slow. Is there a fix for that? I will be updating first post soon to show fix for others to find easy.

npierce
Posts: 858
Joined: Tue 29 Dec 2009, 01:40

#23 Post by npierce »

You're welcome.

Here's what I think was happening:

1. Originally the area for the right button was being defined with zero width and height (i.e., the entire button area was used as a left button area).

2. At some point you used the flsynclient utility to configure your touchpad.

3. flsynclient saved your current configuration and any changes you made to it in the /root/.flSynclient file. Your current configuration defined the right button area with zero width and height, so that is what was written to that file.

4. After you added the "SoftButtonAreas" line to xorg.conf, the right button area was properly defined when the X server was restarted.

5. Immediately after restarting, using the right button, you were able to bring up the right click menu.

6. After a few seconds the delayedrun utility ran the programs in your /root/Startup/ directory, which includes the load-touchpad-settings script, which loads the touchpad settings previously saved in the /root/.flSynclient file. So your right button disappeared.

7. By hiding the /root/.flSynclient file you prevented the load-touchpad-settings script from overwriting the good settings for your button area with the bad settings from the /root/.flSynclient file when you next restarted the X server.

8. :)


By the way, even though right click is now working, I would still be curious to see the /root/.flSynclient file if you still have it. Of course it now has /root/.flSynclient.hid for a name.

Code: Select all

cat /root/.flSynclient.hid
It would help me to better understand the problem and possibly find a way to prevent it for future clickpad users.

markreaves wrote:However the speed of the cursor is very very slow. Is there a fix for that?
These commands should temporarily improve the speed:

Code: Select all

synclient MinSpeed=1
synclient MaxSpeed=1.75
synclient AccelFactor=0.04
The change will be noticable immediately -- no need to restart the X server.

Those values are reasonable for genuine Synaptics touchpads using version 1.3.0 or newer of the Xorg synaptics driver (which have been included in Xorg since August 2010, about the same time that the 1.9.0 X server was released).

You have the 1.6.2 driver, so they should work for you. If they aren't quite ideal, you can experiment by making minor changes to the values, one at a time, until you are happy with them.

Once you are happy with them and want to make them permanent, edit /etc/X11/xorg.conf and change these lines:

Code: Select all

Option "MinSpeed" "0.10"
Option "MaxSpeed" "0.30"
Option "AccelFactor" "0.0030"
to:

Code: Select all

Option "MinSpeed" "1"
Option "MaxSpeed" "1.75"
Option "AccelFactor" "0.04"

or whatever values you determined were more preferable for you when you experimented using synclient.

Actually, I think that if you just removed those three lines, it uses the values I gave by default. But, of course, if you want values that are slightly different, you need to retain the lines.

(The values that were there before were for versions of the synaptics driver earlier than 1.3.0. I am surprised that Puppy Precise would use them.)

markreaves
Posts: 41
Joined: Sat 11 Sep 2010, 21:50

#24 Post by markreaves »

Parameter settings:
LeftEdge = 1700
RightEdge = 5300
TopEdge = 1700
BottomEdge = 4200
FingerLow = 25
FingerHigh = 30
FingerPress = 256
MaxTapTime = 220
MaxTapMove = 220
MaxDoubleTapTime = 180
SingleTapTimeout = 180
ClickTime = 100
FastTaps = 0
EmulateMidButtonTime = 0
EmulateTwoFingerMinZ = 282
EmulateTwoFingerMinW = 7
VertScrollDelta = 100
HorizScrollDelta = 102
VertEdgeScroll = 1
HorizEdgeScroll = 0
CornerCoasting = 0
VertTwoFingerScroll = 1
HorizTwoFingerScroll = 0
MinSpeed = 1
MaxSpeed = 6.26
AccelFactor = 0.003
TrackstickSpeed = 40
EdgeMotionMinZ = 30
EdgeMotionMaxZ = 160
EdgeMotionMinSpeed = 1
EdgeMotionMaxSpeed = 408
EdgeMotionUseAlways = 0
TouchpadOff = 0
LockedDrags = 0
LockedDragTimeout = 5000
RTCornerButton = 2
RBCornerButton = 3
LTCornerButton = 0
LBCornerButton = 0
TapButton1 = 1
TapButton2 = 3
TapButton3 = 0
ClickFinger1 = 1
ClickFinger2 = 3
ClickFinger3 = 0
CircularScrolling = 0
CircScrollDelta = 0.1
CircScrollTrigger = 0
CircularPad = 0
PalmDetect = 0
PalmMinWidth = 10
PalmMinZ = 200
CoastingSpeed = 20
CoastingFriction = 50
PressureMotionMinZ = 30
PressureMotionMaxZ = 160
PressureMotionMinFactor = 1
PressureMotionMaxFactor = 1
ResolutionDetect = 1
GrabEventDevice = 1
TapAndDragGesture = 1
AreaLeftEdge = 0
AreaRightEdge = 0
AreaTopEdge = 0
AreaBottomEdge = 0
HorizHysteresis = 8
VertHysteresis = 8
ClickPad = 1
RightButtonAreaLeft = 0
RightButtonAreaRight = 0
RightButtonAreaTop = 0
RightButtonAreaBottom = 0
MiddleButtonAreaLeft = 0
MiddleButtonAreaRight = 0
MiddleButtonAreaTop = 0
MiddleButtonAreaBottom = 0
As well, the following "feels pretty good" to me:
synclient MinSpeed=3
synclient AccelFactor=0.09
synclient MaxSpeed=6.26
npierce wrote:You're welcome.

Here's what I think was happening:

1. Originally the area for the right button was being defined with zero width and height (i.e., the entire button area was used as a left button area).

2. At some point you used the flsynclient utility to configure your touchpad.

3. flsynclient saved your current configuration and any changes you made to it in the /root/.flSynclient file. Your current configuration defined the right button area with zero width and height, so that is what was written to that file.

4. After you added the "SoftButtonAreas" line to xorg.conf, the right button area was properly defined when the X server was restarted.

5. Immediately after restarting, using the right button, you were able to bring up the right click menu.

6. After a few seconds the delayedrun utility ran the programs in your /root/Startup/ directory, which includes the load-touchpad-settings script, which loads the touchpad settings previously saved in the /root/.flSynclient file. So your right button disappeared.

7. By hiding the /root/.flSynclient file you prevented the load-touchpad-settings script from overwriting the good settings for your button area with the bad settings from the /root/.flSynclient file when you next restarted the X server.

8. :)


By the way, even though right click is now working, I would still be curious to see the /root/.flSynclient file if you still have it. Of course it now has /root/.flSynclient.hid for a name.

Code: Select all

cat /root/.flSynclient.hid
It would help me to better understand the problem and possibly find a way to prevent it for future clickpad users.

markreaves wrote:However the speed of the cursor is very very slow. Is there a fix for that?
These commands should temporarily improve the speed:

Code: Select all

synclient MinSpeed=1
synclient MaxSpeed=1.75
synclient AccelFactor=0.04
The change will be noticable immediately -- no need to restart the X server.

Those values are reasonable for genuine Synaptics touchpads using version 1.3.0 or newer of the Xorg synaptics driver (which have been included in Xorg since August 2010, about the same time that the 1.9.0 X server was released).

You have the 1.6.2 driver, so they should work for you. If they aren't quite ideal, you can experiment by making minor changes to the values, one at a time, until you are happy with them.

Once you are happy with them and want to make them permanent, edit /etc/X11/xorg.conf and change these lines:

Code: Select all

Option "MinSpeed" "0.10"
Option "MaxSpeed" "0.30"
Option "AccelFactor" "0.0030"
to:

Code: Select all

Option "MinSpeed" "1"
Option "MaxSpeed" "1.75"
Option "AccelFactor" "0.04"

or whatever values you determined were more preferable for you when you experimented using synclient.

Actually, I think that if you just removed those three lines, it uses the values I gave by default. But, of course, if you want values that are slightly different, you need to retain the lines.

(The values that were there before were for versions of the synaptics driver earlier than 1.3.0. I am surprised that Puppy Precise would use them.)

npierce
Posts: 858
Joined: Tue 29 Dec 2009, 01:40

#25 Post by npierce »

markreaves,

Thanks for posting your old .flSynclient file. That helps me to see what parameters are recognized by your clickpad, and how they were set before we changed some options.

I'm trying to find a way for Puppy to detect a clickpad so that it can be set up properly without the need for a user to place mysterious incantations into xorg.conf. If you have a few minutes, please post the output of this command:

Code: Select all

grep -i synaptics /var/log/messages*
By the way, speaking of "mysterious incantations", if you would like a middle button, I think one can be added. I realize that your clickpad probably only shows a left and a right button, but I think that the following change would allow the center of the button area (where the divider for the left and right buttons is) to act as a middle mouse button. I could be wrong.

If you would like to try for a middle button, replace this line in xorg.conf:

Code: Select all

Option "SoftButtonAreas"  "50% 0 82% 0 0 0 0 0"
with this:

Code: Select all

 Option "SoftButtonAreas" "65% 0 82% 0 40% 64% 82% 0"
In an attempt to reduce the mystery, here is what those values represent:

Values are given in percentages of touchpad width or height. Values of zero are equivalent to 0% when defining the left or top edge of a button, or 100% when defining the right or bottom edge of a button (unless opposite edges of the button are both zero, then the button is not defined).

1. Distance from left edge of touchpad to left edge of right button
2. Distance from left edge of touchpad to right edge of right button.
3. Distance from top edge of touchpad to top edge of right button
4. Distance from top edge of touchpad to bottom edge of right button.
5. Distance from left edge of touchpad to left edge of middle button
6. Distance from left edge of touchpad to right edge of middle button.
7. Distance from top edge of touchpad to top edge of middle button
8. Distance from top edge of touchpad to bottom edge of middle button.

So the example above would give you the following widths for left, middle, and right:

<--------40%-------><----24%---> <------35%------>

Of course, if you are happy without a middle button, you can just leave those values at zero, and use the above information to fine tune the percentages for your right button. Or not, if it is fine as it is.

markreaves
Posts: 41
Joined: Sat 11 Sep 2010, 21:50

#26 Post by markreaves »

npierce wrote:markreaves,

Thanks for posting your old .flSynclient file. That helps me to see what parameters are recognized by your clickpad, and how they were set before we changed some options.

I'm trying to find a way for Puppy to detect a clickpad so that it can be set up properly without the need for a user to place mysterious incantations into xorg.conf. If you have a few minutes, please post the output of this command:

Code: Select all

grep -i synaptics /var/log/messages*
Mar 31 16:48:09 Unknown user.info kernel: [ 4.200495] psmouse serio1: synaptics: Touchpad model: 1, fw: 7.4, id: 0x1e0b1, caps: 0xd04773/0xe40000/0x5a0400
Mar 31 16:48:09 Unknown user.info kernel: [ 4.269598] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input1
As for middle button, I've never had a use for it. Scrolling and right click for me is very important however lol.

I agree that it would be of benefit for puppy to come with the ability for touchpads/clickpads to "just work". Barring that there should at least be a script or pet package to "fix it". On a side note with the script, I could make a script to alter the xorg.conf file I'm sure. However might take awhile as I've done very little in the way of editing files with bash scripts.

npierce
Posts: 858
Joined: Tue 29 Dec 2009, 01:40

#27 Post by npierce »

markreaves,

Thanks for the excerpt from your /var/log/messages file. That's just what I wanted.

The last of the hex numbers, 0x5a0400, has the bit that identifies your touchpad as being a clickpad (bit 20, if the LSB is considered bit 0). That bit could be tested, and Puppy could adjust xorg.conf if it were true.

But it may be possible to get it right without looking at that bit. I'm doing some tests. And I have a quick question:

Does your clickpad support normal dragging -- holding the left button with one finger while dragging with another finger -- or do you have to use an alternative method (such as tap then drag)?

markreaves
Posts: 41
Joined: Sat 11 Sep 2010, 21:50

#28 Post by markreaves »

Not quite sure what you mean, however I can hold left button, drag with other finger to highlight text.
npierce wrote:markreaves,

Thanks for the excerpt from your /var/log/messages file. That's just what I wanted.

The last of the hex numbers, 0x5a0400, has the bit that identifies your touchpad as being a clickpad (bit 20, if the LSB is considered bit 0). That bit could be tested, and Puppy could adjust xorg.conf if it were true.

But it may be possible to get it right without looking at that bit. I'm doing some tests. And I have a quick question:

Does your clickpad support normal dragging -- holding the left button with one finger while dragging with another finger -- or do you have to use an alternative method (such as tap then drag)?

npierce
Posts: 858
Joined: Tue 29 Dec 2009, 01:40

#29 Post by npierce »

Thanks. Yes, that's what I meant.

Lots of old bug reports exist from people who could not do that with clickpads. I wondered if this was still a problem. None of the reports I saw, nor the commits for the synaptics driver, made it clear that this had been fixed. So, since it works for you, either it has been fixed, or it was never broken and the bug reports were just from people with clickpads that didn't support normal left-button dragging.

Good. That's one less thing to worry about.

npierce
Posts: 858
Joined: Tue 29 Dec 2009, 01:40

#30 Post by npierce »

I've been meaning to follow-up on this, and suggest a modification to Puppy that would allow Puppy to support the right button on clickpads without any user modifications. Sorry that it has taken almost a month to get back to this, but I finally had a chance to look at.

It looks like the simplest way to add this support may be just a one-line addition to xorgwizard (and xorgwizard-automatic).

I see this line in your /var/log/Xorg.0.log file:

Code: Select all

[ 48.833] (II) synaptics: Synaptics Mouse: found clickpad property
That seems to indicate that the driver recognises that your touchpad is a clickpad. More evidence of that is provided by the following line in your old .flSynclient file (which was created before you added the 'Option "ClickPad" "true"' line to your xorg.conf file):

Code: Select all

ClickPad = 1
So I am hoping that you do not need the 'Option "ClickPad" "true"' line in your xorg.conf file.

But it is always good to test out theories, so, just to be sure, please try removing that line from /etc/X11/xorg.conf. In other words, change this:

Code: Select all

   Option "ClickPad"         "true"
   Option "SoftButtonAreas"  "50% 0 82% 0 0 0 0 0"
to this:

Code: Select all

   Option "SoftButtonAreas"  "50% 0 82% 0 0 0 0 0"
Then restart the X server and verify that your right button still works.

Testing with my own non-clickpad touchpad has shown that if the driver doesn't recognise the touchpad as a clickpad, and the "ClickPad" option isn't set true, the "SoftButtonAreas" option will simply be ignored. In fact, synclient -l will report "ClickPad = 0" and won't report the soft button areas at all. This is good, since a non-clickpad touchpad shouldn't have soft button areas defined.

(Not surprisingly, if I have the 'Option "ClickPad" "true"' line in my xorg.conf file, my non-clickpad touchpad is not happy.)

Previously I had thought that it might be necessary for xorgwizard (and xorgwizard-automatic) to look at /var/log/messages and, depending upon the touchpad capabilities reported there, write different lines to the xorg.conf file. But apparently the driver is smart enough just to ignore the "SoftButtonAreas" option if it doesn't recognise the touchpad as a clickpad. If it is also true that you don't need the "ClickPad" option in your xorg.conf file, the code can be much simpler than I first thought.

npierce
Posts: 858
Joined: Tue 29 Dec 2009, 01:40

#31 Post by npierce »

This post is a request for assistance from anyone who is running a PC with a clickpad.

I may have found a way for Puppy to easily detect a PC that has a clickpad installed, which is a step along the road towards getting a clickpad to work with Puppy without the need for the user to edit a configuration file.

If you have a clickpad, this command:

Code: Select all

grep clickpad /var/log/Xorg.0.log
should spit out something like this:

Code: Select all

[ 48.833] (II) synaptics: Synaptics Mouse: found clickpad property
That shows that the clickpad was detected when the X server started.

But in order for Puppy to set the correct options when it generates the xorg.conf file, we need to detect it before starting the X server.

I would be grateful if any user with a clickpad would post the output of these two commands:

Code: Select all

cat /sys/class/input/mouse*/device/name
cat /sys/class/input/mouse*/device/properties
This would allow me to verify how the properties data is formatted.

User avatar
Ghost Dog
Posts: 163
Joined: Fri 27 Jan 2012, 04:29

#32 Post by Ghost Dog »

Code: Select all

# cat /sys/class/input/mouse*/device/name 
ETPS/2 Elantech Touchpad
# cat /sys/class/input/mouse*/device/properties
5
Thanks!
The Way of the Samurai

User avatar
Ghost Dog
Posts: 163
Joined: Fri 27 Jan 2012, 04:29

#33 Post by Ghost Dog »

I thought I should add that the touchpad works fine in Fatdog 6.01. Right-clicks like a charm.
The Way of the Samurai

User avatar
peebee
Posts: 4370
Joined: Sun 21 Sep 2008, 12:31
Location: Worcestershire, UK
Contact:

#34 Post by peebee »

On a new Asus X551 - right click not working using LxPup-15.02 pae k3.17.7 ootb:

# grep clickpad /var/log/Xorg.0.log
[ 211.210] (II) synaptics: Synaptics Mouse: found clickpad property
# cat /sys/class/input/mouse*/device/name
ETPS/2 Elantech Touchpad
# cat /sys/class/input/mouse*/device/properties
5
#
ImageLxPup = Puppy + LXDE
Main version used daily: LxPupSc; Assembler of UPups, ScPup & ScPup64, LxPup, LxPupSc & LxPupSc64

Post Reply