Synaptics Touchpad

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Teil ist Artikel der Hardware Serie.
Laptops Motherboards Servers Eingabegeräte RAID Controller TV Karten Wireless Andere Hardware Andere Architekturen alphabetischer Hardware Index



Inhaltsverzeichnis

[Bearbeiten] Einleitung

Dies ist ein Treiber für das Synaptics Touchpad, welches in einigen Notebooks verbaut ist. Hier ist eine inkomplette Liste.
Der Treiber funktioniert mit Xorg sowie XFree86 4.x!
Das Synaptics Touchpad verhält sich im einfachen Modus (ohne Treiber), wie eine Standardmaus. Mit der Nutzung dieses Treibers stehen mehrere erweiterte Funktionen zur Verfügung, die da wären:


  • Bewegungen mit einstellbarer, nicht-linearer Beschleunigung und Geschwindigkeit
  • Tastenklick duch kurzes Berühren des Touchpad
  • Doppelklick durch zweimaliges kurzes Berühren des Touchpad
  • Ziehen durch kurzes Berühren und Halten des Fingers auf dem Touchpad
  • Emulation der Mittleren und Rechten Maustaste in der oberen oder unteren Ecke des Touchpad
  • Vertikales Scrollen durch Bewegen des Fingers auf der rechten Seite des Touchpad
  • Horizontales Scrollen durch Bewegen des Fingers am unteren Rand des Touchpad
  • Einstellbare Fingerdruckerkennung
  • Multifinger Tipps: zwei Finger für die mittlere und drei Finger für die rechte Maustaste
  • ändern der Einstellungen im laufenden Betrieb (benötigt Shared Memory Option)


Beachte
Bestimmte Funktionen sind von der Touchpad Firmware abhängig, so dass dies auch ohne synaptics Treiber zur Verfügung stehen können.
Nicht alle Funktionen stehen auf allen Touchpad Modelen zur Verfügung, weil diese Funktionen nicht in die Touchpad Firmware implementiert sind.


Zum Überprüfen, ob du ein Synaptics Touchpad besitzt, einfach cat /proc/bus/input/devices eingeben
als Ausgabe sollte etwas in dieser Art erscheinen:

...
I: Bus=0011 Vendor=0002 Product=0007 Version=0000
N: Name="SynPS/2 Synaptics TouchPad"
P: Phys=isa0060/serio1/input0
S: Sysfs=/class/input/input1
H: Handlers=mouse0 event1
B: EV=b
B: KEY=6420 70000 0 0 0 0
B: ABS=11000003
...


[Bearbeiten] Installation

# emerge -av synaptics
sollte das Paket synaptics für deine Architektur "masked" sein, kann hier nachgelesen werden, wie es installiert wird


[Bearbeiten] Konfiguration

[Bearbeiten] Kernel-Konfiguration

Damit der synaptics Treiber das Touchpad erkennt, muss noch folgendes im Kernel aktiviert werden:

Code: Kernel Version 2.6.x
 Device Drivers
   Input device support
     Generic input layer (needed for keyboard, mouse, ...)
       <*>   Event interface
       [*]   Mouse  --->
         <*>   PS/2 mouse


[Bearbeiten] X-Konfiguration

Das Verhalten des Treibers kann durch Parameter verändert werden.
Die Parameter werden durch Optionen in der InputSection der Xorg Konfigurationsdatei deklariert.


Device (String)
Synaptics Device
Protocol (String)
gültige Strings sind:
auto-dev - automatische Erkennung (default)
psaux - raw
event - Linux 2.6 Kernel Events
psm - FreeBSD psm Treiber
TouchpadOff (Integer)
gültige Werte sind:
0 - Touchpad ist aktiviert
1 - Touchpad ist deaktiviert
2 - nur Tippen und Scrollen sind deaktiviert
SHMConfig (Bool)
Schaltet Shared Memory für die Konfiguration an/aus
siehe synclient


LeftEdge (Integer)
X Koordinate für den linken Bereichsrand
RightEdge (Integer)
X Koordinate für den rechten Bereichsrand
TopEdge (Integer)
Y Koordinate für den oberen Bereichsrand
BottomEdge (Integer)
Y Koordinate für den unteren Bereichsrand


Die Otionen LeftEdge, RightEdge, TopEdge and BottomEdge definieren den jeweiligen Bereichsrand und somit auch die Eckbereiche des Touchpad.
Das Touchpad wird mit diesen Optionen in 9 Bereiche unterteilt.

        LeftEdge       RightEdge
            |             |
            |             | 
   ---+-----+-------------+---+-- Physical top edge
      | 1   |      2      | 3 |
      +-----+-------------+---+---- TopEdge
      |     |             |   |
    Y | 4   |      5      | 6 |
      |     |             |   |
      +-----+-------------+---+---- BottomEdge
      | 7   |      8      | 9 |
   ---+-----+-------------+---+-- Physical bottom edge
      |            X          |
      |                       |
 Physical left edge       Physical right edge

X-Koordinaten, welche links der Option LeftEdge liegen, sind Teil des linken Bereiches, also Teil der Bereiche 1, 4 und 7.
Koordinaten, welche mit der X-Koordinate links der von LeftEdge liegen und mit der Y-Koordinate über TopEdge, sind Teil
des linken oberen Eckbereiches, also Teil des Bereiches 1! usw.


FingerLow (Integer)
ist der Fingerdruck auf das Pad kleiner, wird ein Loslassen erkannt
FingerHigh (Integer)
ist der Fingerdruck auf das Pad größer, wird die Berührung erkannt
MaxTapMove (Integer)
maximale Bewegung des Fingers auf dem Touchpad, zur Tipp-Erkennung
MaxTapTime (Integer)
maximale Dauer (in Millisekunden) einer Fingerberührung, zum Erkennen des Tippens
MaxDoubleTapTime (Integer)
maximale Dauer (in Millisekunden) zum Erkennen eines Doppeltipps

Eine Berührung wird erkannt, wenn der Fingerdruck auf dem Touchpad über dem Wert von FingerHigh liegt und ein Loslassen,
wenn der Fingerdruck unter dem Wert von FingerLow liegt.
Eine Tipp wird erkannt, wenn die Zeitspanne der Fingerberührung (vom berühren bis zum loslassen) kleiner als MaxTapTime ist und die Berührungs- und Loslass-Koordinaten weniger Einheiten auseinanderliegen, als MaxTapMove.
Der MaxDoubleTapTime Parameter hat die selbe Funktion, wie MaxTapTime, aber für das zweite, dritte, etc. Tippen in einer bestimmten Tippsequenz.


ClickTime (Integer)
Dauer eines "Mausklicks", der durch einen Tipp erzeugt wurde

Der ClickTime Parameter gibt die Zeitspanne zwischen dem Drücken einer Taste und dem Loslassen im X-Server vor,
als Reaktion auf ein Tippereignis (berühren und loslassen des Touchpad mit dem Finger).


MinSpeed (Float)
minimaler Geschwindigkeitsfaktor
MaxSpeed (Float)
maximaler Geschwindigkeitsfaktor
AccelFactor (Float)
Beschleunigungsfaktor

MinSpeed, MaxSpeed und AccelFactor kontrollieren die Bewegungsgeschwindigkeit des Mauszeigers. Die Werte dieser Parameter bestimmen den Maßstab zwischen den Koordinaten des Touchpad zu den Koordinaten des Bildschirms. Wenn der Finger langsam über das Touchpad bewegt wird gilt der MinSpeed-Wert, bei schneller Bewegung gilt der MaxSpeed-Wert.
MinSpeed, MaxSpeed und AccelFactor haben keinen Effekt auf die Scroll-Geschwindigkeit.


VertScrollDelta (Integer)
vertikale Bewegungsdistanz des Fingers auf dem Touchpad für eine vertikale Scrollbewegung
HorizScrollDelta (Integer)
horizontale Bewegungsdistanz des Fingers auf dem Touchpad für eine horizontale Scrollbewegung
CoastingSpeed (Float)
Scroll-Geschwindigkeit beim Erreichen der Touchpad-Kante

Die Scroll-Geschwindigkeit wird ausschließlich durch die Werte von VertScrollDelta und HorizScrollDelta bestimmt.
Zum Abschalten des vertikalen oder horizontalen Scrollen, setze die Wert auf 0.
Ist der Wert von CoastingSpeed ungleich 0, so wird horizontal und vertikal weitergescrollt, sobald der Finger das Touchpad in einer Ecke loslässt. Der Treiber merkt sich unmittelbar vor dem Loslassen des Fingers die Scroll-Geschwindigkeit und die Richtung. Ist die Scroll-Geschwindigkeit grösser, als der Wert von CoastingSpeed, so wird solange in die selbe Richtung gescrollt, bis der Finger wieder das Touchpad berührt.


LockedDrags (Bool)
wenn aus (off), eine Klick- oder Ziehbewegung endet mit loslassen des Fingers
wenn an (on), eine Klick- oder Ziehbewegung endet mit einer zweiten Berührung des Touchpad
EmulateMidButtonTime (Integer)
generiert die mittlere Maustaste beim Drücken der beiden Touchpad-Tasten zur gleichen Zeit, wenn die Zeit zwischen dem Drücken der beiden Tasten nicht mehr, als der Wert von EmulateMidButtonTime ist
RTCornerButton (Integer)
welche Maustaste wird generiert, bei einer Fingerberührung in der rechten oberen Ecke 0=ausgeschaltet (default)
RBCornerButton (Integer)
welche Maustaste wird generiert, bei einer Fingerberührung des Touchpad in der rechten unteren Ecke 0=ausgeschaltet (default)
LTCornerButton (Integer)
welche Maustaste wird generiert, bei einer Fingerberührung in der linken oberen Ecke 0=ausgeschaltet (default)
LBCornerButton (Integer)
welche Maustaste wird generiert, bei einer Fingerberührung in der linken unteren Ecke 0=ausgeschaltet (default)
TapButton1 (Integer)
welche Maustaste wird generiert, bei der Berührung mit einem Finger
TapButton2 (Integer)
welche Maustaste wird generiert, bei der Berührung mit zwei Fingern gleichzeitig
TapButton3 (Integer)
welche Maustaste wird generiert, bei der Berührung mit drei Fingern gleichzeitig
folgende Werte können genutzt werden:
0 - keine Aktion
1 - linke Maustaste
2 - mittlere Maustaste
3 - rechte Maustaste


[Bearbeiten] Beispiel

Datei: /etc/X11/xorg.conf
...
  Section "ServerLayout"
	Identifier	"Main Layout"
	Screen		"Screen 1"
	InputDevice	"Keyboard" 	"CoreKeyboard"
	InputDevice	"Touchpad"	"CorePointer"
	InputDevice	"Mouse"	
  EndSection

  Section "InputDevice"
	Identifier	"Touchpad"
	Driver		"synaptics"
	Option		"Name"			"Synaptics Touchpad"
	Option		"Device"		"/dev/input/mouse0"
	Option		"Protocol"		"auto-dev"
	Option		"SendCoreEvents"	"true"
	Option		"SHMConfig"		"true"
	Option		"LeftEdge"		"1900"    
	Option		"RightEdge"		"5900"
	Option		"TopEdge"		"1900"
	Option		"BottomEdge"		"4350"
	Option		"FingerHigh"		"25"
	Option		"FingerLow"		"20"
	Option		"MaxTapMove"		"220"
	Option		"MaxTapTime"		"180"
	Option		"MaxDoubleTapTime"	"180"
	Option		"MinSpeed"		"0.04"
	Option		"MaxSpeed"		"0.18"
	Option		"AccelFactor"		"0.001"
	Option		"VertScrollDelta"	"100"
	Option		"HorizScrollDelta"	"100"
	Option		"EmulateMidButtonTime"	"0"
	Option		"RTCornerButton"	"0"
	Option		"RBCornerButton"	"0"
	Option		"LTCornerButton"	"2"
	Option		"LBCornerButton"	"0"
  EndSection
...


Zum Überprüfen, welches InputDevice das Touchpad belegt, einfach cat /proc/bus/input/devices eingeben

...
I: Bus=0011 Vendor=0002 Product=0007 Version=0000
N: Name="SynPS/2 Synaptics TouchPad"
P: Phys=isa0060/serio1/input0
S: Sysfs=/class/input/input1
H: Handlers=mouse0 event1
B: EV=b
B: KEY=6420 70000 0 0 0 0
B: ABS=11000003
...

In diesem Falle wäre dies mouse0.


[Bearbeiten] synclient

Um synclient benutzen zu können, muss in der Xorg Konfigurationsdatei die Option SHMConfig auf "true" stehen.

Datei: /etc/X11/xorg.conf
Section "InputDevice"
  Identifier	"Touchpad"
  Driver	"synaptics"
  ...
  Option	"SHMConfig"	"true"
  ...
EndSection


Das Programm synclient kann die Optionen für das Synaptics Touchpad ändern, ohne das X neugestartet werden muss.
Außerdem kann es die Koordinaten des Fingers auf dem Touchpad ausgeben. Somit kann man anhand der Werte der XY-Koordinaten, die Eckbereiche bestimmen.

Optionen von synclient
$synclient -l listet die derzeitigen gesetzten Benutzeroptionen
$synclient -m 200 Monitor, der Eingaben üder das Touchpad in der Console ausgibt (200 gibt einen Ausgabeintervall von 200ms vor)


Beispiel: Paramter mit synclient an den synaptics Treiber übergeben
$synclient TopEdge=1900 setzt die Y-Koordinate 1900 als TopEdge
$synclient VertScrollDelta=0 deaktiviert vertikales Scrollen
$synclient LockedDrags=off eine Klick- oder Ziehbewegung endet mit loslassen des Fingers


[Bearbeiten] GUI

Die GUI's für den synaptics Treiber benutzen synclient, zum Übergeben der Optionen and den Treiber.


ksynaptics - für den KDE Dektop - im portage

gsynaptics - für den Gnome Desktop - im portage



Quelle
synaptics manpage
synaptics Treiber Homepage


-- erstellt von vitalogy 21:45, 01. Mar 2006 (GMT)

'Persönliche Werkzeuge