Guarda i driver, non le applicazioni
Non troverai un programma che fa questo, a causa di questi tre tipi di touchpad i driver cercano di astrarre su una singola rappresentazione alle applicazioni:
- I touchpad che riportano i dati sulle posizioni assolute vengono tradotti dal driver Xorg in movimento relativo per le applicazioni. Un'applicazione normale non può parlare direttamente con il touchpad (in base alla progettazione), quindi devi davvero cercare una soluzione nel driver.
- I touchpad in grado sia di modalità relativa che assoluta devono passare da una modalità all'altra, che è molto specifica per l'hardware e non sensibile all'applicazione.
- Alcuni touchpad di base non hanno la capacità di riportare le posizioni assolute.
Sfortunatamente, anche se hai un touchpad praticamente in grado di riportare tutti i valori assoluti, la maggior parte dei driver del touchpad non ti consente di usarli nelle applicazioni Linux. I dati assoluti sono davvero lì, in quanto il conducente può rilevare se li tocchi ai bordi per lo scorrimento, ad esempio. Provalo tu stesso usando evtest
in un terminale virtuale (per sospendere X). Il mio touchpad Synaptics riporta le posizioni assolute come segue:
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
La capacità di mettere effettivamente un dispositivo Synaptics in modalità assoluta in Xorg è stata recentemente rimossa da questo commit nel xf86-input-synaptics
driver:
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.
Driver di base a livello di sistema: evdev
L'unico modo in cui vedo che questo è possibile in questo momento in Linux è usare il evdev
driver in Xorg. È stato discusso nel 2010 sulla mailing list di Xorg (un estratto di seguito):
Devo ottenere la posizione assoluta di un dito sul touchpad piuttosto che solo un movimento relativo.
il driver synaptics non lo fa, ma lo fa il driver evdev. Quindi è necessario configurare il proprio server X per utilizzare invece il driver evdev per il touchpad. Il frammento di configurazione seguente lo farà per te, a condizione che tu stia eseguendo il server 1.8 o successivo.
Section "InputClass"
Identifier "evdev touchpad"
MatchIsTouchpad "on"
Driver "evdev"
Option "Mode" "absolute"
EndSection
Salvalo come /etc/X11/xorg.conf.d/99-evdev-touchpad.conf
e riavvia il server. Si noti che ciò modifica solo il comportamento del touchpad stesso, non i dati negli eventi, ma comunque i dati sono sempre assoluti. Inoltre, usando evdev invece di synaptics stai perdendo la possibilità di scorrere con due dita, toccare, ecc.
Bottom line: crea una richiesta di funzionalità
Vedo spazio per una richiesta di funzionalità sul bugtracker a monte per il driver synaptics (e possibilmente altri). Sarebbe molto utile avere un'interfaccia in Xorg per poter leggere i valori di posizione assoluta del touchpad. I principali bloccanti che vedo è che questo potrebbe essere molto specifico per l'hardware e quindi difficile da implementare.
Penso che parlare con Joe Shaw e Peter Hutterer potrebbe anche essere di grande valore per vedere quale sia esattamente la storia in questo, come renderla una grande richiesta di funzionalità e cosa aspettarsi da essa.