Die meisten Touchscreens funktionieren mittlerweile unter Ubuntu ohne weitere Anpassung problemlos. Jedoch ist es in der Standardinstallation des Systems nicht vorgesehen, einen angeschlossenen Touchscreen zu konfigurieren oder zu kalibrieren. Dies wird in diesem Artikel behandelt.
Erfreulicherweise werden gerade Touchscreens für Spezialanwendungen (z.B. für Car-Pcs) oftmals auch herstellerseitig mit Treibern und Tools für Linux versorgt. Sollte der Screen bereits mit Boardmitteln funktionieren, ist von einer nachträglichen Installation von Herstellersoftware jedoch abzuraten, da diese entweder für ältere/veraltete Systeme (Stichwort xorg, evtouch) entwickelt wurde und/oder tiefere Eingriffe in das System und den Kernel erfordert.
Ab Natty wird der Touchscreen ausschließlich über evdev angesteuert.
Um den Screen zu kalibrieren, kann das Tool xinput-calibrator verwendet werden.
xinput-calibrator
Das Programm ist nach der Installation in der Systemverwaltung unter "Touchscreen kalibrieren" zu finden; im Terminal lässt es sich mit dem Befehl
xinput_calibrator
starten. Nach Ausführen und Durchlaufen des Programms werden einige Parameter ausgegeben, die manuell in /etc/X11/xorg.conf.d/99-calibration.conf einzufügen sind (normalerweise müssen Datei und Verzeichnis vorher erst noch angelegt werden).
Unter Lucid kann der Touchscreen bereits mit evdev angesteuert werden, die Vorgehensweise gleicht dann der bei Natty. Alternativ lassen sich viele Screens auch mit dem Xorg-Treiber evtouch einrichten. Voraussetzung ist die Installation [1] des Xorg-Treibers:
xserver-xorg-input-evtouch universe
Ubuntu 10.04 benützt sogenannte xorg.conf.d-snippets. Es muss die Datei 50-evtouch.conf im Ordner /usr/share/X11/xorg.conf.d/ bearbeitet werden:
Section "InputClass"
Identifier "touchscreen catchall"
MatchIsTouchscreen "on"
MatchDevicePath "/dev/input/event*"
Driver "evtouch"
# hier Optionen einfügen
EndSectionDiese Optionen werden nur dann geladen, wenn ein Touchscreen angeschlossen wurde.
Um die Änderungen zu übernehmen, muss der XServer neu gestartet werden:
sudo service gdm restart
(für GNOME, für KDE statt gdm kdm einsetzen)
Die eleganteste Lösung wäre eigentlich, eine neue Datei anzulegen (wie unter xorg.conf.d beschrieben), aber dies kann dazu führen, dass der XServer versucht, diese Einstellungen auch auf die Maus anzuwenden, worauf sich dann das ganze System aufhängen kann (siehe auch LG 1730SF on Ubuntu 10.04 Lucid Lynx
).
| Option | Default | Verhalten | |
Device | Gerätedatei für das Touchscreen. Üblicherweise /dev/input/event1, /dev/input/event2 oder höher. Wird hier ein falscher Wert eingetragen, ist der Touchscreen meist verwendbar, doch sind alle Einstellungen wirkungslos. | ||
MinX | Pixel, an dem der Touchscreen links beginnt. | ||
MinY | Pixel, an dem der Touchscreen oben beginnt. | ||
MaxX | Pixel, an dem der Touchscreen rechts endet. | ||
MaxY | Pixel, an dem der Touchscreen unten endet. | ||
TapTimer | 200 | Zeit in Millisekunden, die man den Touchscreen berühren muss, damit ein Klick-Ereignis ausgelöst wird. | |
LongTouchTimer | 400 | Zeit in Millisekunden, die man den Tochscreen berühren muss, damit ein Lang-Klick-Ereignis ausgelöst wird. | |
Emulate3Buttons | true | Emulation einer Drei-Tasten-Maus | |
Emulate3Timeout | 50 | Zeit in Millisekunden, die man die zwei Tasten drücken muss, damit ein Mittel-Klick-Ereignis ausgelöst wird. | |
MoveLimit | 30 | Radius in Pixeln, innerhalb dessen man beim Klicken bleiben muss, damit der Klick nicht zu einem Ziehen wird. | |
SwapX | false | X-Achse umkehren (links wird zu rechts und anders herum) | |
SwapY | false | Y-Achse umkehren (oben wird zu unten und anders herum) | |
Rotate | Drehung des Touchscreens: cw (im Uhrzeigersinn) oder ccw (gegen den Uhrzeigersinn) |
Die Gerätedatei kann sich durch das nachträgliche Anschließen mehrerer USB-Geräte verändern. Mit dem Programm udev kann man sich einen symbolischen Link /dev/input/touchscreen erstellen, der dann immer auf die richtige Gerätedatei verweist.
Um die Kalibrationsdaten für minX/maxX und minY/maxY zu erhalten, kann xinput_calibration
verwendet werden. Diesem Werkzeug sollte jedoch die aktuelle Konfiguration übergeben werden, damit die Resultate auch stimmen:
./xinput_calibrator --output-type xorg.conf.d --precalib <minX> <maxX> <minY> <maxY>
Falls der Touchscreen nicht der einzige ist (Beispielsweise ein TouchNotebook mit Beamer), gibt es eine modifizierte Version von xinput
, der man mittels --geometry-Parameter mitteilen kann, welcher Schirm der richtige ist:
cd <Ordner wo xinput hin soll> git clone https://github.com/floe/xinput_calibrator.git sh autogen.sh --with-gui=x11 make cd src/ ./xinput_calibrator --output-type xorg.conf.d --precalib <minX> <maxX> <minY> <maxY> --geometry <Breite>x<Höhe>+<X>+<Y>
Bei einigen Touchscreens kann es nach dem Anschließen passieren, dass das Device zwar erkannt wird und auch Eingaben verarbeitet, allerdings eine Achse (meist die X-Achse) spiegelverkehrt interpretiert wird ("Drück links auf den Schirm - Maus springt nach rechts"). Um das Problem beheben zu können, muss man erst einmal die ID des Touchscreens ermitteln. Dazu wird im Terminal der Befehl
xinput list
eingegeben. Aus der Ausgabe lässt sich die ID des Touchscreens ablesen (bei Mehrfachnennung einfach ausprobieren). Mit
xinput set-prop <ID> 'Evdev Axis Inversion' <X> <Y>
lassen sich nun die Eingabekoordinaten spiegeln (<X>: X-Achse, horizontal; <Y>: Y-Achse, vertikal; zu spiegelnde Achse auf "1" setzen, ansonsten "0"). Damit man den Befehl nicht mit jedem Systemstart erneut ausführen muss, empfiehlt es sich, die Zeile in Startprogramme zu kopieren oder sich ein Skript zu schreiben.
Füge /etc/X11/xorg.conf.d/99-calibration.conf folgende Zeile hinzu:
Option "InvertX" "on"
Option "InvertY" "on"
Diese Revision wurde am 12. April 2012 20:19 von frustschieber erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen:
Hardware, System
2004 – 2012 ubuntuusers.de • Einige Rechte vorbehalten