
Ich habe einen HP-Laptop mit einem Touchscreen mit einer Auflösung von 1366 x 768. Ich muss eine Kiosk-Software ausführen, die eine Auflösung von 800 x 600 benötigt. Daher stelle ich sie mit xrandr ein:
xrandr --output eDP-1 --mode 800x600
Es sieht gut aus, als hätte xrandr auf beiden Seiten des Bildschirms schwarze Balken hinzugefügt, um das Seitenverhältnis beizubehalten.
Das Problem tritt auf, wenn ich den Bildschirm berühre. Je weiter ich vom Bildschirmzentrum weg berühre, desto weiter entfernt sich der Cursor. Es sieht so aus, als ob beim Berühren des Bildschirms die seitlichen schwarzen Balken berücksichtigt werden, um zu berechnen, wo der Cursor sein sollte. Angenommen, ich berühre 25 % des physischen Bildschirms, dann wird der Cursor 25 % des sichtbaren Bildschirms platziert, sodass er ausgerichtet ist.
Ich habe versucht,dieser Linkum den Touchscreen zu kalibrieren, aber es macht überhaupt keinen Unterschied.
Antwort1
Wie Sie bereits selbst herausgefunden haben, wird die Abbildung der Touchscreen-Koordinaten auf die Bildschirmkoordinaten durch eine Transformationsmatrix gesteuert.
Normalerweise geht das System davon aus, dass der Touchscreen den gesamten Bildschirmbereich einnimmt, was in den meisten Fällen auch richtig ist. Wenn der Anzeigebereich jedoch größer (z. B. mehrere Monitore) oder kleiner als der Touch-Bereich ist, müssen Sie diese Transformationsmatrix ändern.
Normalerweise müssten Sie Coordinate Transformation Matrix
über festlegen xinput
. Da Sie jedoch verwenden libinput
, gibt es zwei Unterschiede:
- Die
xinput
Immobilie heißtlibinput Calibration Matrix
- Die Transformationsmatrix wird anders berechnet
Gemessen anReinderiens Beitrag, „das Richtige wäre, eine inverse Matrixtransformation durchzuführen“.
Ich weiß ehrlich gesagt nicht, wie das geht, aber zum Glück stellt er ein Skript zur Verfügung, das heißtxcal, das den Touchscreen für Sie kalibriert.
Voraussetzungen:
python3, tkinter, numpy (Installation durch Ausführen sudo apt-get install python3 pyhton3-tk python3-numpy
in einem Terminal).
Herunterladenxcalund führen Sie es aus.