带双显示器的触摸屏

带双显示器的触摸屏

我有 ubuntu 12.04 和两台显示器,其中第一个是触摸屏。

系统识别分辨率为一块大屏幕,分辨率为3840*1080。

问题是使用触摸校准时,校准器屏幕的尺寸会覆盖两个屏幕。因此,当触摸屏幕时,指针会在 X 轴上移动两次。

有什么解决办法吗?

图:NVIDIA 的 Twin 视图

答案1

首先,列出所有输入源xinput --list

⎡ Virtual core pointer                       id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Sony Vaio Jogdial                         id=8    [slave  pointer  (2)]
⎜   ↳ Advanced Silicon S.A CoolTouch(TM) System id=11   [slave  pointer  (2)]
⎜   ↳ HID-compliant Mouse HID-compliant Mouse   id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Sony Vaio Keys                            id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=9    [slave  keyboard (3)]
    ↳ Power Button                              id=10   [slave  keyboard (3)]
    ↳ IR camera                                 id=12   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=14   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=15   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=16   [slave  keyboard (3)]

拿出您感兴趣的设备(在本例中,我使用的是“Advanced Silicon SA CoolTouch(TM) System”),并记下它的 ID。

现在,您需要找出要将输入设备映射到的显示器。最直接的方法是使用xrandr

Screen 0: minimum 8 x 8, current 3200 x 1080, maximum 16384 x 16384
HDMI-0 connected 1280x1024+1920+0 (normal left inverted right x axis y axis) 338mm x 270mm
   1280x1024     60.02*+
   1280x960      60.00  
   1280x720      60.00    59.94  
   1152x864      75.00    70.00  
   1024x768      60.00  
   800x600       60.32  
   720x480       59.94  
   640x480       59.94    59.93  
LVDS-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
   1920x1080     60.00*+  59.94  

在这种情况下,我想将我的触摸设备映射到输出LVDS-0

将第一步中的 ID(11此处)与第二步中的屏幕名称(LVDS-0此处)结合起来,然后运行以下命令:

xinput --map-to-output INPUT-ID SCREEN

在我的示例中,该命令将是:

xinput --map-to-output 11 LVDS-0

您的触摸设备不应正确映射到输入设备,并且不需要任何额外的配置。

这些设置将重启后不再存在请参阅此问题如何使xinput命令持久化

答案2

archlinux wiki 对如何解决这个问题提供了最好的描述,但这里有一些更具体的内容。

您应该运行 xinput --list 来识别输入设备的名称。我创建了一个电子表格来计算转换值。

电子表格在此:https://docs.google.com/spreadsheets/d/13CNQjWfzpEkHM4ZdCcUWDTdQNaFqQ6TYTwatQsYcHcQ/edit?usp=sharing

我计算了你的数字(双 1920x1080 显示器)。

如果您的触摸屏在左侧,则命令将是(“Advanced Silicon SA CoolTouch(TM)System”是我的输入设备的名称,请替换为您的名称):

xinput set-prop 'Advanced Silicon S.A CoolTouch(TM) System' --type=float 'Coordinate Transformation Matrix' 0.5 0 0 0 1 0 0 0 1

对于右边,应该是:

xinput set-prop 'Advanced Silicon S.A CoolTouch(TM) System' --type=float 'Coordinate Transformation Matrix' 0.5 0 0.5 0 1 0 0 0 1

答案3

看: https://wiki.archlinux.org/index.php/Calibrating_Touchscreen

您的矩阵是以下之一:

 Touch screen on the left: 0. 5 0 0 0 1 0 0 0 1
 Touch screen on the right: 0. 5 0 0. 5 0 1 0 0 0 1

我的配置几乎相同(但屏幕一个接一个),在设置正确的矩阵后,我经历了多次点击,如上面链接底部所述。我还没有找到xorg-server在 Ubuntu 下重建的方法;可以肯定的是,所描述的过程不起作用。

答案4

由于这是该问题的第一个谷歌搜索结果,我决定发布对我来说看起来很简单的解决方案。

我找到了这个archlinux 上的链接,你可以使用

xinput --map-to-output <stylus device ID> <screen ID>

所以我不需要玩“坐标变换矩阵”......

相关内容