
Tengo una computadora portátil HP con una pantalla táctil de 1366x768. Necesito ejecutar algún software de quiosco que necesita una resolución de 800x600, así que lo configuro con xrandr:
xrandr --output eDP-1 --mode 800x600
Se ve bien, parece que xrandr ha agregado barras negras a ambos lados de la pantalla para mantener la relación de aspecto.
El problema surge cuando toco la pantalla. Cuanto más me alejo del centro de la pantalla, más alejado estará el cursor. Parece que cuando toco la pantalla tiene en cuenta las barras negras laterales para calcular dónde debe estar el cursor. Digamos que toco el 25% de la pantalla física, el cursor se coloca al 25% de la pantalla visible, por lo que se alinea.
Intenté usareste enlacepara calibrar la pantalla táctil, pero no hace ninguna diferencia.
Respuesta1
Como ya descubrió usted mismo, el mapeo de las coordenadas de la pantalla táctil a las coordenadas de la pantalla está controlado por una matriz de transformación.
Normalmente, el sistema supone que la pantalla táctil abarca toda el área de la pantalla, lo cual es correcto en la mayoría de las circunstancias. Sin embargo, si el área de visualización es más grande (por ejemplo, varios monitores) o más pequeña que el área táctil, deberá modificar esa matriz de transformación.
Tradicionalmente, tendrías que configurarlo Coordinate Transformation Matrix
mediante xinput
. Pero como estás usando libinput
, hay dos diferencias:
- La
xinput
propiedad se llamalibinput Calibration Matrix
- La matriz de transformación se calcula de manera diferente.
A juzgar porLa publicación de Reinderien, "lo correcto es hacer una transformación matricial inversa".
Honestamente no sé cómo hacer eso, pero afortunadamente él proporciona un guión llamadoxcal, que calibra la pantalla táctil por usted.
Requisitos previos:
python3, tkinter, numpy (instalar ejecutándolo sudo apt-get install python3 pyhton3-tk python3-numpy
en una terminal).
Descargarxcaly ejecutarlo.