我有一台 HP 笔记本电脑,触摸屏分辨率为 1366x768。我需要运行一些需要 800x600 分辨率的自助服务软件,因此我使用 xrandr 进行设置:
xrandr --output eDP-1 --mode 800x600
看起来不错,看起来 xrandr 在屏幕两侧添加了黑条以保持纵横比。
当我触摸屏幕时,问题就出现了。我触摸的位置离屏幕中心越远,光标就越偏离。看起来当我触摸屏幕时,它会考虑侧面的黑条来计算光标应该在哪里。假设我触摸了物理屏幕的 25%,光标就会被放置在可见屏幕的 25% 处,所以它确实对齐了。
我尝试使用此链接校准触摸屏,但没有任何区别。
答案1
正如您自己已经发现的那样,从触摸屏坐标到屏幕坐标的映射由变换矩阵控制。
通常,系统假设触摸屏覆盖整个屏幕区域,这在大多数情况下是正确的。但是,如果显示区域大于(例如多个显示器)或小于触摸区域,则必须修改该转换矩阵。
传统上,您必须Coordinate Transformation Matrix
通过进行设置xinput
。但由于您使用的是libinput
,因此存在两个区别:
- 该
xinput
属性称为libinput Calibration Matrix
- 变换矩阵的计算方式不同
根据Reinderien 的帖子,“正确的做法是进行逆矩阵变换”。
说实话,我不知道该怎么做,但幸运的是,他提供了一个名为西卡,它会为您校准触摸屏。
先决条件:
python3、tkinter、numpy(通过sudo apt-get install python3 pyhton3-tk python3-numpy
在终端中运行安装)。
下载西卡并执行它。