Veja drivers, não aplicativos
Você não encontrará um programa fazendo isso, devido a esses três tipos de touchpads que os drivers tentam abstrair para uma única representação nos aplicativos:
- Os touchpads que relatam dados de posições absolutas estão sendo convertidos pelo driver Xorg em movimento relativo para os aplicativos. Como um aplicativo comum não pode falar diretamente com o touchpad (por design), é necessário procurar uma solução no driver.
- Os touchpads capazes de modos relativo e absoluto precisam ser alternados, o que é muito específico do hardware e não reconhece aplicativos.
- Alguns touchpads mais básicos não têm a capacidade de relatar posições absolutas.
Infelizmente, mesmo se você tiver um touchpad capaz de relatar todos os valores absolutos, a maioria dos drivers do touchpad não permite usá-los em aplicativos Linux. Os dados absolutos estão realmente lá, pois o driver pode detectar se você está tocando nas bordas para rolar, por exemplo. Teste você mesmo usando evtest
um terminal virtual (para suspender o X). O touchpad My Synaptics reporta as posições absolutas da seguinte maneira:
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
A capacidade de realmente colocar um dispositivo Synaptics no modo absoluto no Xorg foi removida recentemente por este commit no 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 básico do sistema: evdev
A única maneira de ver isso possível neste momento no Linux é usando o evdev
driver no Xorg. Foi discutido em 2010 na lista de discussão do Xorg (um trecho abaixo):
Preciso obter a posição absoluta de um dedo no touchpad, em vez de apenas um movimento relativo.
o driver synaptics não faz isso, mas o driver evdev faz. Portanto, você precisa configurar o servidor X para usar o driver evdev para o touchpad. O seguinte snippet de configuração fará isso por você, desde que você esteja executando o servidor 1.8 ou posterior.
Section "InputClass"
Identifier "evdev touchpad"
MatchIsTouchpad "on"
Driver "evdev"
Option "Mode" "absolute"
EndSection
Salve isso como /etc/X11/xorg.conf.d/99-evdev-touchpad.conf
e reinicie o servidor. Observe que isso altera apenas o comportamento do próprio touchpad, não os dados nos eventos, mas, novamente, esses dados são sempre absolutos de qualquer maneira. Além disso, usando evdev em vez de sinápticos, você perde a capacidade de rolagem, toque com dois dedos, etc.
Conclusão: crie uma solicitação de recurso
Vejo espaço para uma solicitação de recurso no rastreador de erros upstream de para o driver synaptics (e possivelmente outros). Seria muito útil ter uma interface no Xorg para poder ler os valores absolutos de posição do touchpad. Os principais bloqueadores que vejo é que isso pode ser muito específico do hardware e, portanto, difícil de implementar.
Eu acho que conversar com Joe Shaw e Peter Hutterer também pode ser de grande valia para ver exatamente qual é a história disso, como torná-la uma ótima solicitação de recurso e o que esperar dela.