在双显示器上校准触摸屏(一键式一键式)

mul*_*sen 5 x11 xrandr touch-screen xinput

我使用的是 Debian 9。我有一台带有 2 个内置显示器的小型 PC,我打算将其用作销售点。它有一个面向顾客的显示器(非触摸屏)和一个面向收银员的显示器(触摸屏)。每台显示器的分辨率为 1366 x 768。我有一个 POS 应用程序,它作为唯一的 x 客户端运行 - 不存在窗口管理器和桌面管理器。这样系统消耗的资源最少。即我可以像这样从终端运行它:

xinit my-pos-app $* -- :1
Run Code Online (Sandbox Code Playgroud)

只要我使用鼠标,应用程序就可以正常运行。然而,目的是让这项工作仅使用触摸屏。

问题是触摸屏没有校准。我可以看到,当我触摸它时,我触摸的位置右侧大约 10 厘米处的一个点实际上正在被激活。所以我尝试使用xinput_calibrator- 一个程序,它会显示一个 gui 显示屏幕上的点来触摸并自动校准触摸屏。但是按照目前的设置,这一步是不可能完成的。这是因为只有一个显示器是触摸屏,而另一台显示器不是,但xinput_calibrator不知道这一点,它在每台显示器上放置了一半的图片。非触摸屏显示器上的校准点显然无法触摸,因此我无法完成该xinput_calibrator过程。

当我将鼠标移到第一台显示器的右侧时,我注意到它出现在第二台显示器的左侧。因此,该系统似乎并排放置了两个显示器。我不太了解这个低级监视器配置的东西,但是从 的输出来看xrandr,系统似乎认为它只有 1 个显示:

$ xrandr
Screen 0: minimum 320 x 200, current 2732 x 768, maximum 8192 x 8192
eDP-1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 344mm
x 193mm
1366x768  60.00*+  40.00
1360x768  59.80    59.96
1024x768  60.04    60.00
960x720   60.00
928x696   60.05
896x672   60.01
960x600   60.00
960x540   59.99
800x600   60.00    60.32    56.25
840x525   60.01    59.88
800x512   60.17
700x525   59.98
640x512   60.02
720x450   59.89
640x480   60.00    59.94
680x384   59.80    59.96
576x432   60.06
512x384   60.00
400x300   60.32    56.34
320x240   60.05
VGA-1 disconnected (normal left inverted right x axis y axis)
DP-1 connected 1366x768+1366+0 (normal left inverted right x axis y axis) 344mm x 194mm
1366x768  60.00*+  40.00
HDMI-1 disconnected (normal left inverted right x axis y axis)
Run Code Online (Sandbox Code Playgroud)

此外,xinput显示触摸屏的设备 ID 为12

请有人告诉我如何正确配置触摸屏。我是否需要先使用 xrandr 将屏幕分成 2 个?如果是这样,那我该怎么做?我被困住了。

mul*_*sen 9

我现在工作了。我做的第一件事是从 xorg 存储库安装最新版本的显示驱动程序。我不确定这一步是否绝对必要,因为它似乎并没有改变xrandr多少输出,但无论如何它并没有受到伤害:

$ sudo apt-add-repository ppa:xorg-edgers/ppa
$ sudo apt-get update
$ sudo apt-get dist-upgrade
$ aptitude search <my-graphics-card-brand>
$ sudo apt-get install <corresponding package>
Run Code Online (Sandbox Code Playgroud)

现在xrandr显示DP-1更多属性:

$ xrandr
Screen 0: minimum 320 x 200, current 2732 x 768, maximum 8192 x 8192
eDP-1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
   1366x768      60.00*+  40.00  
   1360x768      59.80    59.96  
   1024x768      60.04    60.00  
   960x720       60.00  
   928x696       60.05  
   896x672       60.01  
   960x600       60.00  
   960x540       59.99  
   800x600       60.00    60.32    56.25  
   840x525       60.01    59.88  
   800x512       60.17  
   700x525       59.98  
   640x512       60.02  
   720x450       59.89  
   640x480       60.00    59.94  
   680x384       59.80    59.96  
   576x432       60.06  
   512x384       60.00  
   400x300       60.32    56.34  
   320x240       60.05  
VGA-1 disconnected (normal left inverted right x axis y axis)
DP-1 connected 1366x768+1366+0 (normal left inverted right x axis y axis) 344mm x 194mm
   1360x768      59.80    59.96  
   1024x768      60.04    60.00  
   960x720       60.00  
   928x696       60.05  
   896x672       60.01  
   960x600       60.00  
   960x540       59.99  
   800x600       60.00    60.32    56.25  
   840x525       60.01    59.88  
   800x512       60.17  
   700x525       59.98  
   640x512       60.02  
   720x450       59.89  
   640x480       60.00    59.94  
   680x384       59.80    59.96  
   576x432       60.06  
   512x384       60.00  
   400x300       60.32    56.34  
   320x240       60.05  
HDMI-1 disconnected (normal left inverted right x axis y axis)
Run Code Online (Sandbox Code Playgroud)

然后启动 X 并运行以下命令指定eDP-1为触摸屏:

$ xinput --map-to-output $(xinput list --id-only "Elan Touchscreen") eDP-1
Run Code Online (Sandbox Code Playgroud)

xinput(v.1.6.2)的联机帮助页提到设备名称也可以作为字符串给出。因此,这也将起作用:

$ xinput --map-to-output "Elan Touchscreen" eDP-1
Run Code Online (Sandbox Code Playgroud)