mirror of
https://github.com/X11Libre/xf86-input-synaptics.git
synced 2026-03-24 01:34:04 +00:00
220 lines
8.0 KiB
Plaintext
220 lines
8.0 KiB
Plaintext
Synaptics TouchPad driver for XOrg/XFree86
|
|
------------------------------------------
|
|
|
|
Introduction
|
|
------------
|
|
|
|
This is a driver for the Synaptics TouchPad for XOrg/XFree86 4.x. A
|
|
Synaptics touchpad by default operates in compatibility mode by
|
|
emulating a standard mouse. However, by using a dedicated driver, more
|
|
advanced features of the touchpad becomes available, such as:
|
|
|
|
- Movement with adjustable, non-linear acceleration and speed.
|
|
- Button events through short touching of the touchpad.
|
|
- Double-Button events through double short touching of the touchpad.
|
|
- Dragging through short touching and holding down the finger on the
|
|
touchpad.
|
|
- Middle and right button events on the upper and lower corner of
|
|
the touchpad.
|
|
- Vertical scrolling (button four and five events) through moving
|
|
the finger on the right side of the touchpad.
|
|
- The up/down button sends button four/five events.
|
|
- Horizontal scrolling (button six and seven events) through moving
|
|
the finger on the lower side of the touchpad.
|
|
- The multi-buttons send button four/five events, and six/seven
|
|
events for horizontal scrolling.
|
|
- Adjustable finger detection.
|
|
- Multifinger taps: two finger for middle button and three finger
|
|
for right button events. (Needs hardware support. Not all models
|
|
implement this feature.)
|
|
- Pressure dependent motion speed.
|
|
- Trackstick emulation.
|
|
- Run-time configuration using shared memory. This means you can
|
|
change parameter settings without restarting the X server.
|
|
|
|
Note that depending on the touchpad firmware, some of these features
|
|
might be available even without using the synaptics driver. Note also
|
|
that some functions are not available on all touchpad models, because
|
|
they need support from the touchpad hardware/firmware. (Multifinger
|
|
taps for example.)
|
|
|
|
|
|
Installation
|
|
------------
|
|
|
|
See the INSTALL file for detailed installation instructions.
|
|
|
|
|
|
Compatibility
|
|
-------------
|
|
|
|
The driver has been reported to work on a number of different laptop
|
|
computers. See the COMPATIBILITY file for the list. If your computer
|
|
is not listed, please let me (petero2@telia.com) know if the driver
|
|
works on your computer.
|
|
|
|
|
|
Parameters
|
|
----------
|
|
|
|
See the synaptics(5) manual page for a description of the available
|
|
driver parameters.
|
|
|
|
|
|
FAQ
|
|
---
|
|
|
|
* Is this free software?
|
|
|
|
Yes, the source code is released under the GNU General Public
|
|
License.
|
|
|
|
* When will the driver be included in the XOrg distribution?
|
|
|
|
This is unlikely to happen because of copyright issues. Although
|
|
the GPL license is compatible with the license used by the XOrg X
|
|
server, the XOrg project doesn't want to include GPL code in their
|
|
source code, because it would effectively make the whole XOrg
|
|
project GPL. The synaptics license can't be changed unless all
|
|
copyright holders agree to change the license, but previous
|
|
attempts to find all copyright holders for the synaptics source
|
|
code have failed.
|
|
|
|
So unfortunately, the best we can currently hope for is that the
|
|
synaptics driver is included as a separate package by the major
|
|
distributions.
|
|
|
|
* How do I use this driver with Linux kernel 2.6.x?
|
|
|
|
You need to have the "evdev" driver loaded or compiled into the
|
|
kernel (CONFIG_INPUT_EVDEV). Set the "Protocol" parameter in the X
|
|
configuration file to "auto-dev". Also, if you set the "Device"
|
|
parameter to "/dev/psaux", the same X configuration file should
|
|
work for a 2.4.x kernel.
|
|
|
|
When configuring the kernel, enable PS/2 mouse support
|
|
(CONFIG_MOUSE_PS2).
|
|
|
|
* It still doesn't work with a 2.6 kernel.
|
|
|
|
Some distributions come with an incomplete /dev directory. The
|
|
driver needs the /dev/input/eventX device nodes. Try to create
|
|
them manually if they don't exist already. (Look at
|
|
/proc/bus/input/devices to figure out how many nodes you need.)
|
|
|
|
# mknod /dev/input/event0 c 13 64
|
|
# mknod /dev/input/event1 c 13 65
|
|
# mknod /dev/input/event2 c 13 66
|
|
...
|
|
|
|
* How can I configure tap-to-click behavior?
|
|
|
|
If you set MaxTapTime=0 in the X config file then the touchpad
|
|
will not use tapping at all, i.e. touching/tapping will not be
|
|
taken as a mouse click.
|
|
|
|
If, instead, you set MaxTapMove=0 in the X config file, then the
|
|
touchpad will not use tapping for a single finger tap (left mouse
|
|
button click) but will for the two and three finger tap (middle
|
|
and right button click).
|
|
|
|
* Why did tap-to-click stop working after I upgraded from an old version?
|
|
|
|
Time is now measured in milliseconds instead of "number of
|
|
packets". In practice, this means that if you are upgrading from
|
|
an old version, you need to change MaxTapTime and
|
|
EmulateMidButtonTime to make "tap to click" work. Good values are
|
|
180 and 75 respectively.
|
|
|
|
* Gnome scrollbars scroll too much when using tap-to-click. Why?
|
|
|
|
The ClickTime parameter is probably too big. Try setting it to
|
|
100. Gnome scrollbars use auto repeat, ie if you press the left
|
|
mouse button and keep it pressed, the scroll bar will move until
|
|
you release the button. This will lead to problems if the tap time
|
|
is longer than the delay before auto repeat starts.
|
|
|
|
* Vertical and horizontal scrolling events are mixed up. How come?
|
|
|
|
Probably because some X startup/login script uses xmodmap to remap
|
|
the mouse buttons. Correct settings for the touchpad are:
|
|
|
|
xmodmap -e 'pointer = 1 2 3 4 5 6 7'
|
|
|
|
You can check the current settings by running:
|
|
|
|
xmodmap -pp
|
|
|
|
* Horizontal scrolling doesn't work in some programs. Is it a driver
|
|
bug?
|
|
|
|
No, probably not. Support for horizontal scroll events must be
|
|
handled by the application programs. Not all programs do that
|
|
yet. Ask the authors of the application in question to implement
|
|
support for horizontal scroll events.
|
|
|
|
You can use the "xev" program to check if the synaptics driver
|
|
generates the horizontal scroll events.
|
|
|
|
If you are having problems with Mozilla, try this link:
|
|
|
|
http://lists.debian.org/debian-laptop/2004/08/msg00167.html
|
|
|
|
* Can the driver be used together with gpm?
|
|
|
|
No, not reliably, if you are using a 2.4.x kernel. The gpm driver
|
|
and the X driver both try to read data from the touchpad, and if
|
|
they try to read at the same time, both drivers see incomplete
|
|
data and don't know how to interpret it.
|
|
|
|
If you are running a 2.6.x kernel though, there should be no
|
|
conflict, because the kernel driver will make sure both user space
|
|
drivers receive all events from the touchpad.
|
|
|
|
* How do I compile the driver?
|
|
|
|
Beginning with version 0.11.8, it should be possible to compile
|
|
the driver by simply running "make". This will compile a driver
|
|
for XFree86 4.2.x, which will also work for 4.3.x versions of
|
|
XFree86.
|
|
|
|
If you have an older version of XFree86, you will need an
|
|
installed X source tree. On an RPM based distribution, you can
|
|
build a suitable source tree by installing the XFree86 source RPM
|
|
and compile it. For example, in RedHat 9, use the following
|
|
commands:
|
|
|
|
# rpm -vU XFree86-4.3.0-2.src.rpm
|
|
# cd /usr/src/redhat/SPECS
|
|
# rpmbuild -bb XFree86.spec
|
|
|
|
Then change the TOP variable in the Makefile to match the version
|
|
of XFree86 you are using. In the example above, set
|
|
|
|
TOP = /usr/src/redhat/BUILD/XFree86-4.3.0/xc
|
|
|
|
* Can I use this driver with an ALPS Glidepoint device?
|
|
|
|
Yes, see the README.alps file for more information.
|
|
|
|
* The driver says "reset failed" and the touchpad doesn't work. What
|
|
can I do?
|
|
|
|
This problem has been reported for some Compaq models. It's
|
|
currently not known why it happens, but removing the reset command
|
|
from the driver appears to make it work. If you use a 2.4 linux
|
|
kernel, replace the contents of the ps2_synaptics_reset() function
|
|
in ps2comm.c with a "return TRUE;" statement. If you use a 2.6
|
|
linux kernel, remove the while loop in synaptics_query_hardware()
|
|
in the file drivers/input/mouse/synaptics.c in the linux kernel
|
|
source code.
|
|
|
|
|
|
Authors
|
|
-------
|
|
|
|
Many people have contributed to this driver. Look at the top of
|
|
synaptics.c and ps2comm.c for details.
|
|
|
|
The current maintainer is Peter Osterlund <petero2@telia.com>.
|