Difference between revisions of "Synaptics"

From CBLFS
Jump to navigationJump to search
(64Bit)
 
(9 intermediate revisions by 3 users not shown)
Line 7: Line 7:
 
----
 
----
  
{{Package-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 become available.}}
+
{{Package-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 become available.|http://web.telia.com/~u89404340/touchpad/index.html}}
  
 
== Dependencies ==
 
== Dependencies ==
Line 28: Line 28:
 
=== 32Bit ===
 
=== 32Bit ===
  
  Todo
+
Compile the package:
 +
 
 +
  PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}" \
 +
make PREFIX=/usr ARCH=i686 CC="gcc ${BUILD32}" LD="gcc ${BUILD32}"
  
=== N32 ===
+
Install the package:
  
  Todo
+
  PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}" \
 +
make PREFIX=/usr ARCH=i686 install
  
 
=== 64Bit ===
 
=== 64Bit ===
Line 38: Line 42:
 
Compile the package:
 
Compile the package:
  
  make PREFIX=/usr ARCH="x86_64" INPUT_MODULE_DIR="/usr/lib64/xorg/modules/input"
+
PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" \
 +
  make PREFIX=/usr ARCH=x86_64 CC="gcc ${BUILD64}" LD="gcc ${BUILD64}"
 +
 
 +
Install the package:
 +
 
 +
PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" \
 +
make PREFIX=/usr ARCH=x86_64 install
 +
 
 +
== Configuring ==
 +
 
 +
In addition to reading the information below it may not be a bad idea to read the synaptics(5) man page. Most of this information came from that man page.
 +
 
 +
You may want to create a udev rule so that your touch pad has a symlink always pointing to the correct device node:
 +
 
 +
cat > /etc/udev/rules.d/90-synaptics.rules << "EOF"
 +
# Begin /etc/udev/rules.d/90-synaptics.rules
 +
 +
KERNEL=="mouse*", ATTRS{name}=="SynPS/2 Synaptics TouchPad", SYMLINK+="input/synaptics"
 +
 +
# End /etc/udev/rules.d/90-synaptics.rules
 +
EOF
 +
 
 +
The following configuration serves as an example only.
 +
 
 +
Section "InputDevice"
 +
    Identifier  "Synaptics Mouse"
 +
    Driver      "synaptics"
 +
 +
    Option      "SHMConfig" "on"
 +
 +
    Option      "Device" "/dev/input/synaptics"
 +
    Option      "Protocol" "auto-dev"
 +
 +
    Option      "LeftEdge" "1200"
 +
    Option      "RightEdge" "5600"
 +
    Option      "TopEdge" "1200"
 +
    Option      "BottomEdge" "4600"
 +
 +
    Option      "FingerLow" "25"
 +
    Option      "FingerHigh" "30"
 +
 +
    Option      "MaxTapTime" "180"
 +
    Option      "MaxTapMove" "220"
 +
 +
    Option      "TapButton1" "0"
 +
    Option      "TapButton2" "0"
 +
    Option      "TapButton3" "0"
 +
 +
    Option      "VertScrollDelta" "100"
 +
    Option      "HorizEdgeScroll" "0"
 +
 +
    Option      "MinSpeed" "0.09"
 +
    Option      "MaxSpeed" "0.18"
 +
 +
    Option      "AccelFactor" "0.0015"
 +
EndSection
 +
 
 +
And in the '''ServerLayout''' section:
 +
 
 +
    InputDevice    "Synaptics Mouse" "AlwaysCore"
 +
 
 +
The '''SHMConfig''' is very useful for creating your initial setup. This allows you to change these values through synclient without needing to restart the X server. It is recommended that you keep this option on, but be aware it allows all users to change the Synaptics device settings on the fly.
 +
 
 +
=== Using synclient ===
 +
 
 +
synclient is a very useful tool to make configuring the touch pad very easy. You can list the current setting with '''synclient -l''', monitor changes to the touchpad's state with '''synclient -m [time]''', and change a value with '''synclient var1=value1'''.
 +
 
 +
Running '''synclient -m [time]''' will give you an output similar to the following:
 +
 
 +
    time    x    y  z f  w  l r u d m    multi  gl gm gr gdx gdy
 +
    0.110  3041 2923  24 1  4  0 0 0 0 0  00000000  0  0  0  0  0
 +
    0.124  3056 2917  34 1  4  0 0 0 0 0  00000000  0  0  0  0  0
 +
    0.134  3054 2922  34 1  4  0 0 0 0 0  00000000  0  0  0  0  0
 +
    0.149  3054 2926  34 1  4  0 0 0 0 0  00000000  0  0  0  0  0
 +
    0.171  3039 2992  12 1  4  0 0 0 0 0  00000000  0  0  0  0  0
 +
 
 +
What does all this mean:
 +
 
 +
* x & y are the position of the pressure on the pad.
 +
* z is the amount of pressure on the pad.
 +
* f is the number of fingers on the pad.
 +
* w is a measurement of the finger width.
 +
* l, r, u, d, m, & multi are all button states.
 +
* gl, gm, & gr are designated for a guest device, (the knob in the middle of the keyboard).
 +
* gdx & gdy relative position movements from the guest device.
 +
 
 +
==== Edge Settings ====
 +
 
 +
The easiest way to get the edge settings (LeftEdge, RightEdge, TopEdge, and BottomEdge) of your touchpad is to run synclient -m 100. Move your finger around the outside of the active area on the touch pad. The minimum and maximum x and y values you see on the screen will be the respective edges of your touch pad.
 +
 
 +
==== Pressure Settings ====
  
Install the package
+
While you're looking at the output of the edge settings you can also get a good idea of what the pressure settings (FingerLow and FingerHigh) can be.
 +
 
 +
When the pressure on the touch pad (column z) is greater then FingerHigh, the driver will count this as a touch. When the pressure on the touch pad is less then FingerLow, the driver will count this is a release.
 +
 
 +
==== Tapping ====
 +
 
 +
There are a few ways to handle tapping.
 +
 
 +
One way to shut both tapping and scrolling off would be to set TouchpadOff=2.
 +
 
 +
The driver is very robust in the way that it supports one, two, and/or three finger taps. Which mouse button is pressed on these three different taps is controlled by the TapButton1, TapButton2, and TapButton3 settings. In the example all three of these are set to 0, which essentially turns tapping off. For example if you would like a single finger tap to represent a left mouse button click, set TapButton1=1.
 +
 
 +
==== Scrolling ====
  
make PREFIX=/usr ARCH="x86_64" INPUT_MODULE_DIR="/usr/lib64/xorg/modules/input" install
+
Scrolling occurs when the pressure of the touch pad occurs outside of the Edges you specified above. There are two settings that can enable of disable scrolling on your touch pad. For example, if you wanted vertical scrolling but not horizontal scrolling you would set VertEdgeScroll=1 HorizEdgeScroll=0. If you want to turn scrolling on then you probably should also set VertScrollDelta and/or HorizScrollDelta. Each one of these is the distance your finger would have to move on the scrolling portion of the touch pad for a scroll to happen. Setting these to a infinitely small or large value is not a very good idea.
  
 
= Contents =
 
= Contents =
Line 57: Line 163:
 
| None
 
| None
 
|}
 
|}
 +
 +
[[Category:Input Drivers]]

Latest revision as of 14:50, 19 March 2009

Download Source: http://web.telia.com/~u89404340/touchpad/files/synaptics-0.14.6.tar.bz2

Introduction to Synaptics

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 become available.

Project Homepage: http://web.telia.com/~u89404340/touchpad/index.html

Dependencies

Required

Non-Multilib

Compile the package:

make PREFIX=/usr

Install the package

make PREFIX=/usr install

Multilib

32Bit

Compile the package:

PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}" \
make PREFIX=/usr ARCH=i686 CC="gcc ${BUILD32}" LD="gcc ${BUILD32}"

Install the package:

PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}" \
make PREFIX=/usr ARCH=i686 install

64Bit

Compile the package:

PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" \
make PREFIX=/usr ARCH=x86_64 CC="gcc ${BUILD64}" LD="gcc ${BUILD64}"

Install the package:

PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" \
make PREFIX=/usr ARCH=x86_64 install

Configuring

In addition to reading the information below it may not be a bad idea to read the synaptics(5) man page. Most of this information came from that man page.

You may want to create a udev rule so that your touch pad has a symlink always pointing to the correct device node:

cat > /etc/udev/rules.d/90-synaptics.rules << "EOF"
# Begin /etc/udev/rules.d/90-synaptics.rules

KERNEL=="mouse*", ATTRS{name}=="SynPS/2 Synaptics TouchPad", SYMLINK+="input/synaptics"

# End /etc/udev/rules.d/90-synaptics.rules
EOF

The following configuration serves as an example only.

Section "InputDevice"
    Identifier  "Synaptics Mouse"
    Driver      "synaptics"

    Option      "SHMConfig" "on"

    Option      "Device" "/dev/input/synaptics"
    Option      "Protocol" "auto-dev"

    Option      "LeftEdge" "1200"
    Option      "RightEdge" "5600"
    Option      "TopEdge" "1200"
    Option      "BottomEdge" "4600"

    Option      "FingerLow" "25"
    Option      "FingerHigh" "30"

    Option      "MaxTapTime" "180"
    Option      "MaxTapMove" "220"

    Option      "TapButton1" "0"
    Option      "TapButton2" "0"
    Option      "TapButton3" "0"

    Option      "VertScrollDelta" "100"
    Option      "HorizEdgeScroll" "0"

    Option      "MinSpeed" "0.09"
    Option      "MaxSpeed" "0.18"

    Option      "AccelFactor" "0.0015"
EndSection

And in the ServerLayout section:

    InputDevice    "Synaptics Mouse" "AlwaysCore"

The SHMConfig is very useful for creating your initial setup. This allows you to change these values through synclient without needing to restart the X server. It is recommended that you keep this option on, but be aware it allows all users to change the Synaptics device settings on the fly.

Using synclient

synclient is a very useful tool to make configuring the touch pad very easy. You can list the current setting with synclient -l, monitor changes to the touchpad's state with synclient -m [time], and change a value with synclient var1=value1.

Running synclient -m [time] will give you an output similar to the following:

    time     x    y   z f  w  l r u d m     multi  gl gm gr gdx gdy
   0.110  3041 2923  24 1  4  0 0 0 0 0  00000000   0  0  0   0   0
   0.124  3056 2917  34 1  4  0 0 0 0 0  00000000   0  0  0   0   0
   0.134  3054 2922  34 1  4  0 0 0 0 0  00000000   0  0  0   0   0
   0.149  3054 2926  34 1  4  0 0 0 0 0  00000000   0  0  0   0   0
   0.171  3039 2992  12 1  4  0 0 0 0 0  00000000   0  0  0   0   0

What does all this mean:

  • x & y are the position of the pressure on the pad.
  • z is the amount of pressure on the pad.
  • f is the number of fingers on the pad.
  • w is a measurement of the finger width.
  • l, r, u, d, m, & multi are all button states.
  • gl, gm, & gr are designated for a guest device, (the knob in the middle of the keyboard).
  • gdx & gdy relative position movements from the guest device.

Edge Settings

The easiest way to get the edge settings (LeftEdge, RightEdge, TopEdge, and BottomEdge) of your touchpad is to run synclient -m 100. Move your finger around the outside of the active area on the touch pad. The minimum and maximum x and y values you see on the screen will be the respective edges of your touch pad.

Pressure Settings

While you're looking at the output of the edge settings you can also get a good idea of what the pressure settings (FingerLow and FingerHigh) can be.

When the pressure on the touch pad (column z) is greater then FingerHigh, the driver will count this as a touch. When the pressure on the touch pad is less then FingerLow, the driver will count this is a release.

Tapping

There are a few ways to handle tapping.

One way to shut both tapping and scrolling off would be to set TouchpadOff=2.

The driver is very robust in the way that it supports one, two, and/or three finger taps. Which mouse button is pressed on these three different taps is controlled by the TapButton1, TapButton2, and TapButton3 settings. In the example all three of these are set to 0, which essentially turns tapping off. For example if you would like a single finger tap to represent a left mouse button click, set TapButton1=1.

Scrolling

Scrolling occurs when the pressure of the touch pad occurs outside of the Edges you specified above. There are two settings that can enable of disable scrolling on your touch pad. For example, if you wanted vertical scrolling but not horizontal scrolling you would set VertEdgeScroll=1 HorizEdgeScroll=0. If you want to turn scrolling on then you probably should also set VertScrollDelta and/or HorizScrollDelta. Each one of these is the distance your finger would have to move on the scrolling portion of the touch pad for a scroll to happen. Setting these to a infinitely small or large value is not a very good idea.

Contents

Installed Programs: synclient syndaemon
Installed Libraries: ${XORG_PREFIX}/lib/xorg/modules/input/synaptics_drv.so
Installed Directories: None