Tela sensível ao toque + resolução não nativa = cursor desalinhado

Tela sensível ao toque + resolução não nativa = cursor desalinhado

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 Matrixvia xinput. Mas como você está usando libinput, existem duas diferenças:

  • A xinputpropriedade é 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-numpyem um terminal).

Baixarxcale execute-o.

informação relacionada