Ein Touchscreen besteht vereinfacht ausgedrückt aus einem Bildschirm, vor dem ein transparentes Touchpad sitzt. Sind die Auflösungen des Bildschirms und des Touchpads nicht identisch, so ergibt sich daraus das Problem, daß nicht in allen Bereichen des Bildschirms Aktionen ausgelöst werden können und daß ein Klick nicht an derselben Stelle registriert wird, an der der Bildschirm angetippt wurde. Um dies zu kompensieren, berechnet man einen x- und einen y-Ausgleichsfaktor, mit denen die x- und y-Koordianten des Touchpads (von XOrg) multipliziert werden, um die x- und y-Koordinaten des Bildschirms zu erhalten.
Der Bildschirm hat eine Auflösung von 1024 x 600 Pixeln, das Touchpad hingegen eine Auflösung von 885 x 635. Auf der X-Achse liefert das Touchpad eine geringere Auflösung als der Bildschirm, auf der Y-Achse hingegen eine höhere. Die Ausgleichfaktoren berechnen sich wie folgt:
x = 1024 / 885 = 1.15706214 y = 600 / 635 = 0.94488188
Die Ausgleichsfaktoren werden in die Transformationsmatrix eingesetzt:
Um die ausgerechnete Matrix auszuprobieren, kann man diese temporär mit
xinput set-prop '<Touchpad-Name>' 'Coordinate Transformation Matrix' 1.157062 0 0 0 0.944881 0 0 0 1
setzen. Die Ausgleichsfaktoren werden auf sechs Nachkommastellen gekürzt und in Leserichtung (zeilensweise von links nach rechts) hintereinandergesetzt. Hierbei wird "<Touchpad-Name>" durch den richtigen Namen des Touchpads ersetzt, den ein Aufruf von
xinput list
ermittelt.
Wenn die Einstellungen korrekt arbeiten, sollten diese bei jedem Starten des Gerätes automatisch gesetzt werden. Hierzu gibt es (mindestens) zwei Wege. Der bessere Variante wäre, da die Konfiguration bereits beim Starten von XOrg stattfinden sollte, über eine Datei (z.B. /etc/X11/xorg.conf.d/90-calibration.conf) mit dem Inhalt:
Section "InputClass" Identifier "Kalibrierung" MatchProduct "<Touchpad-Name>" Option "TransformationMatrix" "1.157062 0 0 0 0.944881 0 0 0 1" EndSection
Doch leider hat diese Variante bei mir auch nach mehrfachem Herumprobieren die Kalibrierung nicht automatische einstellen wollen. Eine weitere Variante wäre, ein Skript bei jedem Einloggen in die grafische Oberfläche auszuführen, welches über xinput set-prop ...
die zuvor berechneten Parameter setzt.
Das Skript erstellen und z.B. als /usr/bin/touchpad-kalibrierung abspeichern.
#!/bin/bash xinput set-prop ...
chmod +x /usr/bin/touchpad-kalibrierung
ausführbar machen.
Damit das Skript automatisch beim Einloggen ausgeführt wird, legt man noch eine .desktop-Datei (z.B. /etc/xdg/autostart/touchpad-kalibrierung.desktop) an:
[Desktop Entry] Type=Application Name=Kalibrierung Exec=/usr/bin/touchpad-kalibrierung