
Eu tenho um laptop HP com tela tátil de 1366x768. Preciso executar um software de quiosque que precisa de uma resolução de 800x600, então configurei-o com xrandr:
xrandr --output eDP-1 --mode 800x600
Parece bom, parece que o xrandr adicionou barras pretas em ambos os lados da tela para manter a proporção.
O problema surge quando toco na tela. Quanto mais toco no centro da tela, mais afastado fica o cursor. Parece que quando toco na tela ele leva em consideração as barras pretas laterais para calcular onde o cursor deve estar. Digamos que eu toque 25% na tela física, o cursor é colocado 25% na tela visível, então ele se alinha.
Eu tentei usaresse linkpara calibrar a tela sensível ao toque, mas não faz diferença alguma.
Responder1
Como você já descobriu, o mapeamento das coordenadas da tela de toque para as coordenadas da tela é controlado por uma matriz de transformação.
Normalmente, o sistema assume que a tela sensível ao toque abrange toda a área da tela, o que é correto na maioria das circunstâncias. No entanto, se a área de exibição for maior (por exemplo, vários monitores) ou menor que a área de toque, será necessário modificar essa matriz de transformação.
Tradicionalmente, você teria que configurar Coordinate Transformation Matrix
via xinput
. Mas como você está usando libinput
, existem duas diferenças:
- A
xinput
propriedade é chamadalibinput Calibration Matrix
- A matriz de transformação é calculada de forma diferente
A julgar peloPostagem de Reinderien, “o adequado é fazer uma transformação inversa de matriz”.
Sinceramente, não sei como fazer isso, mas felizmente ele fornece um script chamadoxcal, que calibra a tela sensível ao toque para você.
Pré-requisitos:
python3, tkinter, numpy (instale executando sudo apt-get install python3 pyhton3-tk python3-numpy
em um terminal).
Baixarxcale execute-o.