Veja os drivers, não os aplicativos
Você não encontrará um programa fazendo isso, por causa desses três tipos de touchpads, os drivers tentam abstrair para uma única representação para os aplicativos:
- Os touchpads que reportam dados de posições absolutas estão sendo traduzidos pelo driver do Xorg para o movimento relativo dos aplicativos. Um aplicativo regular não pode falar diretamente com o touchpad (por design), então você realmente precisa procurar uma solução no driver.
- Os touchpads capazes de modos relativo e absoluto precisam de alternância de modos, que é muito específica do hardware e não reconhece o aplicativo.
- Alguns touchpads mais básicos não têm a capacidade de informar as posições absolutas.
Infelizmente, mesmo que você tenha um touchpad capaz de reportar 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 motorista pode detectar se você está tocando nas bordas para rolagem, por exemplo. Teste isso por si mesmo usando evtest
em um terminal virtual (para suspender X). O meu touchpad Synaptics reporta as posições absolutas da seguinte forma:
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 driver xf86-input-synaptics
:
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 para todo o sistema: evdev
A única maneira que vejo isso para ser possível neste momento no Linux é usar o driver evdev
no Xorg. Foi discutido em 2010 na lista de discussão do Xorg (um trecho abaixo):
Eu tenho que pegar o absoluto posição de um dedo no touchpad, em vez de apenas relativa movimento.
o driver synaptics não faz isso, mas o driver evdev faz isso. assim você precisa configurar seu servidor X para usar o driver evdev para o touchpad em vez disso. O snippet de configuração a seguir fará isso você forneceu o servidor 1.8 ou posterior.
Section "InputClass" Identifier "evdev touchpad" MatchIsTouchpad "on" Driver "evdev" Option "Mode" "absolute" EndSection
Salvar como
/etc/X11/xorg.conf.d/99-evdev-touchpad.conf
e reiniciar o servidor. Observe que isso só altera o comportamento do touchpad em si, não os dados nos eventos, mas, novamente, os dados são sempre absoluto de qualquer maneira. Além disso, usando evdev em vez de synaptics você está perdendo a capacidade de rolagem de dois dedos, tocando, etc.
Conclusão: crie uma solicitação de recurso
Eu vejo espaço para uma solicitação de recurso no bugtracker upstream para o driver synaptics (e possivelmente outros ). Seria muito útil ter uma interface no Xorg para poder ler os valores de posição absoluta do touchpad. Os principais bloqueadores que vejo são que isso pode ser muito específico do hardware e, portanto, difícil de implementar.
Acho que falar com Joe Shaw e Peter Hutterer também pode ser de grande valor para ver o que exatamente é a história, como torná-la uma grande solicitação de recurso e o que esperar dela.