Multitouchgesten unter Unity (Ubuntu 12.04)

Schon seit längeren bin ich nun stolzer Besitzer eines Asus Zenbook UX31A. Auf dem Ultrabook selbst läuft dabei Ubuntu 12.04 mit der Unity-Oberfläche. Da das Notebook ein sehr gutes und vor allem großes Multitouchpad besitzt, habe ich mich mit dem Thema Multitouch-Gesten unter Ubuntu mal ein bisschen intensiver auseinander gesetzt. Dieser Artikel soll meine Erfahrungen dazu zusammenfassen.

Da das Touchpad out of the box nicht so funktionierte, wie ich mir das eigentlich vorstellte, habe ich zusätzlich folgende Einstellungen vorgenommen und in ein Skript gepackt:

#!/bin/sh

killall syndaemon
syndaemon -i 1.7 -d -t # Abschalten des Pads beim Schreiben

synclient TapButton1=1 TapButton2=3 TapButton3=2 
synclient MinSpeed=2 MaxSpeed=3
synclient CircularScrolling=1
synclient CircScrollTrigger=0
synclient PalmDetect=1
synclient PalmMinWidth=4
synclient PalmMinZ=1

Das Tool syndaemon sorgt zunächst dafür, dass das Touchpad für 1,7 Sekunden während der Benutzung der Tastatur deaktiviert wird. Weitere Einstellungen des unter Ubuntu bereits ab Werk vorhandenen Programms findet man in der sehr guten Man-Page (man syndaemon). Die erste Zeile mit dem Befehl synclient sorgt weiterhin dafür, dass ein Klick mit 2 Fingern einen rechten Mausklick emuliert, ein Klick mit 3 Fingern einen Druck auf die mittlere Maustaste. Die weiteren Optionen will ich hier nicht weiter erläutern. Welche Optionen aktuell gesetzt sind, oder welche man setzen kann findet man mit Hilfe von

synclient -l

heraus.

Um sicher zu stellen, dass das ausführbar gemachte Skript nicht nur bei jeden Systemstart automatisch startet, sondern auch nach einer Standby-Phase (Suspend) noch aktiv ist, muss folgender Befehl abgesetzt werden (Quelle):

gsettings set org.gnome.settings-daemon.peripherals.input-devices hotplug-command "/path/to/script/touchpad"

Kommen wir nun aber zu den “wirklichen” Multitouch-Gesten. Mein Ziel ist es, dass z. B. bei einen Wisch mit 3 Fingern nach links im Browser Chrome ein Zurück (Backward) ausgelöst wird. 3 Finger deshalb, weil ich 2 Finger schon für das Scrollen vertikal und horizontal benutze. Von Haus aus bietet Ubuntu hier das Programm Ginn an. Da dieses aber nicht so gut dokumentiert ist und ich deshalb auch mein Ziel nicht erreichen konnte, sah ich mir das Programm Touchegg an.

Leider funktioniert dieses bei einer Installation über die offiziellen Quellen derzeit nicht richtig. Es gibt aber bereits eine aktuellere Version, die funktioniert. Diese wird so installiert:

svn checkout http://touchegg.googlecode.com/svn/touchegg/
cd touchegg
make
sudo make install

Anschließend kann man die Datei ~/.config/touchegg/touchegg.conf editieren und nach seinen Wünschen anpassen. Hilfreich ist hier das Touchegg Wiki. Aber auch hiermit war es mir nicht möglich mein Ziel in vollen Umfang zu erfüllen. Unity scheint nämlich irgendwie alle Gesten die mit bis zu 3 Fingern ausgeführt werden, zu verschlucken. Deshalb verwendet ich nun eine 4-Finger-Wisch-Geste für ein Zurück im Browser Chrome.

Multitouch-Gesten funktionieren also derzeit unter Unity eher schlecht als recht. Außerdem ist es bei mir auch so, dass ich vor den Start des Programms touchegg zunächst auch immer erst den Befehl

sudo modprobe -r psmouse && sudo modprobe psmouse

ausführen muss, damit Touchegg wenigstens mit 4 oder 5 Fingergesten korrekt funktioniert. Ich hoffe, dass sich diese Situation vielleicht sogar mit Erscheinung von Ubuntu 12.10 schon verbessern wird.

Jetzt noch ein paar Fragen an euch: Nutzt ihr “echte” Mutlitouch-Gesten unter Linux? Wenn ja, welche Einstellungen habt ihr gemacht? Habt ihr ähnliche Probleme oder sogar Lösungen für mich?

Anhang (~/.config/touchegg/touchegg.conf):

<touchégg>

    <settings>
        <property name="composed_gestures_time">0</property>
    </settings>

    <application name="All">

        <gesture type="TAP" fingers="2" direction="">
            <action type="MOUSE_CLICK">BUTTON=3</action>
        </gesture>

        <gesture type="TAP" fingers="3" direction="">
            <action type="MOUSE_CLICK">BUTTON=2</action>
        </gesture>

        <gesture type="TAP" fingers="5" direction="">
            <action type="CLOSE_WINDOW"></action>
        </gesture>

        <gesture type="DRAG" fingers="5" direction="DOWN">
            <action type="SEND_KEYS">Super+W</action>
        </gesture>

        <gesture type="DRAG" fingers="3" direction="UP">
            <action type="MAXIMIZE_RESTORE_WINDOW"></action>
        </gesture>

        <gesture type="DRAG" fingers="5" direction="LEFT">
            <action type="SEND_KEYS">Alt+Tab</action>
        </gesture>

        <gesture type="DRAG" fingers="3" direction="DOWN">
            <action type="MINIMIZE_WINDOW"></action>
        </gesture>

        <gesture type="DRAG" fingers="3" direction="LEFT">
            <action type="MOVE_WINDOW"></action>
        </gesture>

        <gesture type="DRAG" fingers="3" direction="RIGHT">
            <action type="MOVE_WINDOW"></action>
        </gesture>

        <gesture type="PINCH" fingers="3" direction="ALL">
            <action type="RESIZE_WINDOW"></action>
        </gesture>

        <gesture type="PINCH" fingers="5" direction="ALL">
            <action type="SEND_KEYS">Alt+F1</action>
        </gesture>

        <gesture type="PINCH" fingers="2" direction="IN">
            <action type="SEND_KEYS">Control+KP_Add</action>
        </gesture>
        <gesture type="PINCH" fingers="2" direction="OUT">
            <action type="SEND_KEYS">Control+KP_Subtract</action>
        </gesture>

    </application>

    <application name="Google-chrome">

        <gesture type="TAP" fingers="4" direction="">
            <action type="SEND_KEYS">Control+W</action>
        </gesture>

        <gesture type="TAP" fingers="5" direction="">
            <action type="SEND_KEYS">F5</action>
        </gesture>

        <gesture type="DRAG" fingers="4" direction="LEFT">
            <action type="SEND_KEYS">Alt+Left</action>
        </gesture>

        <gesture type="DRAG" fingers="4" direction="RIGHT">
            <action type="SEND_KEYS">Alt+Right</action>
        </gesture>

        <gesture type="DRAG" fingers="4" direction="UP">
            <action type="SEND_KEYS">Control+KP_Add</action>
        </gesture>

        <gesture type="DRAG" fingers="4" direction="DOWN">
            <action type="SEND_KEYS">Control+KP_Subtract</action>
        </gesture>

    </application>  

    <application name="Okular, Gwenview">

        <gesture type="PINCH" fingers="2" direction="IN">
            <action type="SEND_KEYS">Control+KP_Add</action>
        </gesture>

        <gesture type="PINCH" fingers="2" direction="OUT">
            <action type="SEND_KEYS">Control+KP_Subtract</action>
        </gesture>

        <gesture type="ROTATE" fingers="2" direction="LEFT">
            <action type="SEND_KEYS">Control+L</action>
        </gesture>

        <gesture type="ROTATE" fingers="2" direction="RIGHT">
            <action type="SEND_KEYS">Control+R</action>
        </gesture>

    </application>

</touchégg>
  • Paul

    Super, danke für die Anleitung.
    Nachdem ich nen anderen Bluetoothstick genommen hatte funktionierte alles einwandfrei.
    Habe die Gesten etwas an meine Mint 13 Oberfläche angepasst und vor allem an die Firefoxshortcuts,
    macht großen Spaß das Trackpad!
    Bei mir hat es allerdings gereicht den Befehl “touchegg” in den Autostart zu packen, dass alles läuft.
    Beste Grüße

  • Confuso

    moin, danke für die Anleitung. Unter 12.10 und Gnome 3 funktionieren auch 3 Finger Gesten. Allerdings funktioniert bei mir die Rotate Geste nicht, hast du das bei dir hinbekommen?

    • maroony

      Ich habe deshalb schon mit den Entwickler gesprochen. Du kannst das alles nachlesen unter

      http://code.google.com/p/touchegg/issues/detail?id=176&q=touchegg

      Momentan ist mein Notebook in Reparatur. Deshalb kann ich momentan auch nicht weiter testen.

      • Confuso

        ok thx, werde ich weiter verfolgen. Hatte es letztens sogar hinbekommen, die Rotate Geste hinzubekommen, allerdings nur, wenn für die jeweilige Fingeranzahl keine Drag Geste vorhanden ist. Das scheint es zu überlagern. Leider funktioniert es mittlerweile auch nicht mehr, keine Ahnung warum.

        • confuso

          hat sich eigentlich noch etwas getan?

          • maroony

            Nicht das ich wüsste. Ich hab mich jetzt aber auch schon länger nicht mehr damit beschäftigt. Bin mit meiner aktuellen Konfiguration ganz zufrieden.

  • Pingback: Maria Smith()