触摸屏 + 非原始分辨率 = 光标未对齐

触摸屏 + 非原始分辨率 = 光标未对齐

我有一台 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在终端中运行安装)。

下载西卡并执行它。

相关内容