ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

Touchscreen

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

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.

Hinweis:

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.

Installation und Konfiguration

Ab Ubuntu 11.04

Ab Ubuntu 11.04 wird der Touchscreen ausschließlich über evdev angesteuert.

Kalibrierung

Um den Screen zu kalibrieren, kann das Werkzeug xinput-calibrator verwendet werden.

  • xinput-calibrator

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install xinput-calibrator 

sudo aptitude install 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).

Ubuntu 10.04

Unter Ubuntu 10.04 kann der Touchscreen bereits mit evdev angesteuert werden, die Vorgehensweise gleicht dann der oben beschriebenen. 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

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install xserver-xorg-input-evtouch universe 

sudo aptitude install xserver-xorg-input-evtouch universe 

Einrichtung

Ubuntu 10.04 benutzt sogenannte xorg.conf.d-snippets. Dazu muss die Datei /usr/share/X11/xorg.conf.d/50-evtouch.conf bearbeitet werden:

Section "InputClass"
        Identifier "touchscreen catchall"
        MatchIsTouchscreen "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evtouch"

        # hier Optionen einfügen

EndSection

Diese Optionen werden nur dann geladen, wenn ein Touchscreen angeschlossen wurde. Um die Änderungen zu übernehmen, muss der XServer neu gestartet werden.

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 {en}).

Einstellungen

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)

Hinweis:

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.

Kalibrierung

Um die Kalibrationsdaten für minX/maxX und minY/maxY zu erhalten, kann xinput_calibration {en} 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> 

Mehrere Bildschirme

Falls der Touchscreen nicht der einzige ist (beispielsweise ein TouchNotebook mit Beamer), gibt es eine modifizierte Version von xinput {en}, 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> 

Problembehandlung

Vertauschte Achsen

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").

Eventuell kann man auch durch Ausprobieren die richtige Einstellung herausfinden:

xinput set-prop <ID> "Evdev Axes Swap" 1 

oder

xinput set-prop <ID> "Evdev Axis Calibration" <Min-X> <Max-X> <Min-Y> <Max-Y> 

Damit man den Befehl nicht mit jedem Systemstart erneut ausführen muss, kann man den entsprechenden Befehl im Autostart anlegen oder ein Skript schreiben.

Alternative Lösung

Dank evdev-Protokoll kann man das Ganze auch in die /etc/X11/xorg.conf schreiben bzw. unter /etc/X11/xorg.conf.d/ ablegen. Füge /etc/X11/xorg.conf.d/99-calibration.conf folgende Zeile hinzu:

        Option "InvertX" "on"
        Option "InvertY" "on"
ubuntuusers.local › WikiTouchscreen