
У меня ноутбук HP с тактильным экраном 1366x768. Мне нужно запустить какое-то программное обеспечение киоска, которому нужно разрешение 800x600, поэтому я устанавливаю его с помощью xrandr:
xrandr --output eDP-1 --mode 800x600
Выглядит хорошо, похоже, xrandr добавил черные полосы по обеим сторонам экрана, чтобы сохранить соотношение сторон.
Проблема возникает, когда я касаюсь экрана. Чем дальше я касаюсь от центра экрана, тем больше курсор смещается. Похоже, когда я касаюсь экрана, он учитывает боковые черные полосы, чтобы вычислить, где должен быть курсор. Скажем, я касаюсь 25% физического экрана, курсор помещается на 25% в видимый экран, поэтому он выравнивается.
Я пробовал использоватьэта ссылкадля калибровки сенсорного экрана, но это вообще ничего не меняет.
решение1
Как вы уже сами поняли, преобразование координат сенсорного экрана в экранные координаты управляется матрицей преобразования.
Обычно система предполагает, что сенсорный экран охватывает всю область экрана, что верно в большинстве случаев. Однако, если область отображения больше (например, несколько мониторов) или меньше области касания, вам необходимо изменить эту матрицу преобразования.
Традиционно вам пришлось бы устанавливать Coordinate Transformation Matrix
через xinput
. Но поскольку вы используете libinput
, есть два отличия:
- Недвижимость
xinput
называетсяlibinput Calibration Matrix
- Матрица преобразования рассчитывается по-другому
Судя поПост Reinderien, «правильнее всего сделать обратное матричное преобразование».
Честно говоря, я не знаю, как это сделать, но, к счастью, он предоставляет скрипт, который называетсяxcal, который откалибрует сенсорный экран для вас.
Предварительные условия:
python3, tkinter, numpy (устанавливается путем запуска sudo apt-get install python3 pyhton3-tk python3-numpy
в терминале).
Скачатьxcalи выполнить его.