Spójrz na sterowniki, a nie aplikacje
Nie znajdziesz takiego programu, ponieważ te trzy typy tabliczek dotykowych sterowniki próbują wyodrębnić do pojedynczej reprezentacji aplikacji:
- Płytki dotykowe zgłaszające dane pozycji bezwzględnych są tłumaczone przez sterownik Xorg na względny ruch aplikacji. Zwykła aplikacja nie może rozmawiać bezpośrednio z touchpadem (zgodnie z projektem), więc naprawdę musisz poszukać rozwiązania w sterowniku.
- Płytki dotykowe obsługujące tryby względne i bezwzględne wymagają przełączania trybów, które są bardzo specyficzne dla sprzętu i nie uwzględniają aplikacji.
- Niektóre bardziej podstawowe touchpady nie mają możliwości zgłaszania pozycji bezwzględnych.
Niestety, nawet jeśli masz touchpad zdolny do raportowania wszystkich wartości bezwzględnych, większość sterowników touchpada nie pozwala na używanie ich w aplikacjach Linux. Dane absolutne są naprawdę dostępne, ponieważ kierowca może wykryć, czy dotykasz ich na krawędziach, na przykład w celu przewijania. Sprawdź to sam, używając evtest
wirtualnego terminala (aby zawiesić X). Mój touchpad Synaptics zgłasza pozycje bezwzględne w następujący sposób:
Event type 3 (EV_ABS)
Event code 0 (ABS_X)
Value 3332
Min 1472
Max 5648
Fuzz 8
Resolution 39
Event code 1 (ABS_Y)
Value 2017
Min 1408
Max 4806
Fuzz 8
Resolution 79
Możliwość przełączania urządzenia Synaptics w tryb absolutny w Xorg została niedawno usunięta przez to zatwierdzenie w xf86-input-synaptics
sterowniku:
Remove absolute mode
Moving a touchpad in absolute mode is unusual - touchpads are disconnected
from the output device, so direct interaction is hard. There appears to be
little usage of it (I haven't seen bug reports from people claiming to use
it). Joe Shaw, author of the code and only known user doesn't have a use for
it anymore, so purge it from the repo.
Sterownik podstawowy dla całego systemu: evdev
Jedynym sposobem, w jaki widzę, że jest to możliwe w tej chwili w systemie Linux, jest użycie evdev
sterownika w Xorg. Zostało to omówione w 2010 roku na liście mailingowej Xorg (fragment poniżej):
Muszę uzyskać bezwzględną pozycję palca na touchpadzie, a nie tylko względny ruch.
sterownik synaptics tego nie robi, ale robi to sterownik evdev. Musisz więc skonfigurować serwer X do korzystania ze sterownika evdev dla touchpada. Poniższy fragment konfiguracji zrobi to za Ciebie, pod warunkiem, że korzystasz z serwera 1.8 lub nowszego.
Section "InputClass"
Identifier "evdev touchpad"
MatchIsTouchpad "on"
Driver "evdev"
Option "Mode" "absolute"
EndSection
Zapisz to jako /etc/X11/xorg.conf.d/99-evdev-touchpad.conf
i zrestartuj serwer. Pamiętaj, że zmienia to tylko zachowanie samego touchpada, a nie dane w zdarzeniach, ale z drugiej strony dane te są zawsze absolutne. Ponadto, używając evdev zamiast synaptics, tracisz możliwość przewijania dwoma palcami, stukania itp.
Konkluzja: utwórz żądanie funkcji
Widzę miejsce na żądanie funkcji w głównym narzędziu do usuwania błędów dla sterownika synaptics (i ewentualnie innych). Przydałby się interfejs w Xorg, aby móc odczytać bezwzględne wartości pozycji touchpada. Główne blokery, które widzę, to to, że może to być bardzo specyficzne dla sprzętu, a zatem trudne do wdrożenia.
Myślę, że rozmowa z Joe Shawem i Peterem Huttererem może być również bardzo cenna, aby zobaczyć, jaka dokładnie jest historia, jak sprawić, by była to świetna prośba o funkcje i czego się po niej spodziewać.