Touchpad-Scrolling für GTK3 invertieren
Marvin Gülker · 16.02.2014
GTK3 führt Smooth Scrolling ein, was nicht ohne weiteres invertiert werden kann.
Kategorien: Kurztipps, Software
Über Touchpads kann man sich bekanntlich streiten. Insbesondere über die Art und Weise, wie man mit ihnen scrollt. Zwar hatte ich nur für eine verhältnismäßig kurze Zeit Kontakt mit Macs, bin allerdings sehr schnell ein Fan von deren sog. „natural scrolling“ geworden, bei dem man den Inhalt scrollt und nicht den Scrollbalken. Oder anders ausgedrückt: Es funktioniert so, wie man es von gängigen Smartphones gewöhnt ist.
Aktuelle Touchpad-Hardware zusammen mit einem aktuellen X unterstützt
Zwei-Finger-Scrolling über den xf86-input-synaptics
-Treiber. Bis vor
kurzem war der Tipp, die Scrollrichtung zu invertieren, folgende Zeile
in der ~/.xinitrc
(wenn man so wie ich X manuell von der virtuellen
Konsole aus startet):
xmodmap -e "pointer = 1 2 3 5 4 6 7 8 9 10"
Das tauscht die Mausbuttons 5 und 4, die traditionell für Scroll-Up und Scroll-Down stehen, aus. GTK3 hat allerdings vor einiger Zeit eine Technik namens Smooth Scrolling eingeführt, die keinen Gebrauch mehr von dieser traditionellen Methode macht. Das Ergebnis ist dann, dass trotz Mausbuttonvertauschen ein invertiertes Scrolling in GTK3-Anwendungen nicht funktioniert. Nervigerweise nur in GTK3-Anwendungen, sodass die eine Anwendung so herum, die andere so herum scrollt. Ein desolater Zustand.
Die Lösung findet sich in diesem Bugreport in Kommentar Nr. 5. Mithilfe von
% xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=10 [slave pointer (2)] ⎜ ↳ TPPS/2 IBM TrackPoint id=11 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Integrated Camera id=8 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=9 [slave keyboard (3)] ↳ ThinkPad Extra Buttons id=12 [slave keyboard (3)]
stellt man zunächst fest, welches Xinput-Gerät das Touchpad ist. Bei mir ist es das mit der ID 10 (Synaptics TouchPad). Mit folgendem Kommando stellt man jetzt die Scrolling-Distanz fest:
% xinput list-props 10 | grep 'Distance' Synaptics Scrolling Distance (274): 109, 109
Der Trick ist nun, diese Distanz einfach zu invertieren, d.h. ins Negative zu verkehren:
% xinput set-prop 10 "Synaptics Scrolling Distance" -109 -109
Danach sollten GTK3-Anwendungen wie gewünscht invertiert scrollbar sein.
Der Trick funktioniert im Übrigen auch für alle anderen Anwendungen,
sodass der eingangs genannte xmodmap
-Befehl aus der ~/.xinirc
entfernt und durch den obigen xinput set-prop
-Befehl ersetzt werden
kann.
Synaptics muss mindestens Version 1.6.2 sein, ältere Versionen haben offenbar Probleme mit negativen Scroll-Distanzen.