如何在双显示器系统上校准触摸屏?

如何在双显示器系统上校准触摸屏?

我有两个不同尺寸的双显示器设置。我的主显示器是 23 英寸宽屏 Acer T230H 触摸屏,第二个显示器是普通的 20 英寸。当我使用触摸屏时,光标会根据我触摸显示器的位置显示在辅助显示屏上。我如何校准它以仅控制我的主显示器?

答案1

正如 Beni Cherniavsky-Paskin 在评论中所建议的那样,我使用以下命令将输入​​设备映射到输出屏幕:

xinput map-to-output <device> <output>

为了弄清楚哪个是哪个,我首先运行xinput以列出输入设备。从该列表中,我观察到我的触摸屏是“QUANTA 光学触摸屏”,并列为设备 ID 12。然后我运行xrandr以确定触摸屏,在我的情况下是 VGA1。

只需输入以下命令即可:

xinput map-to-output 12 VGA1

答案2

正如 Beni Cherniavsky-Paskin 和 Paul Lammertsma 在上述评论中所建议的那样,xinput map-to-output <device> <output>这对我很有用!

你首先需要运行xinput来获取输入设备的 ID,

上述命令为我返回类似这样的内容。

user@user-hpEnvy:~$ xinput
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech Unifying Device. Wireless PID:401b   id=10   [slave  pointer  (2)]
⎜   ↳ Logitech Unifying Device. Wireless PID:4016   id=11   [slave  pointer  (2)]
⎜   ↳ ELAN20E7:00 04F3:20E7                     id=13   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=15   [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)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ HP Truevision HD                          id=12   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=14   [slave  keyboard (3)]
    ↳ HP Wireless hotkeys                       id=16   [slave  keyboard (3)]
    ↳ HP WMI hotkeys    

接下来我运行xrandr获取屏幕列表,命令的输出如下

user@user-hpEnvy:~$ xrandr
Screen 0: minimum 8 x 8, current 3840 x 1080, maximum 32767 x 32767
eDP1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 382mm x 215mm
   1920x1080      60.0*+   59.9     40.0  
   1680x1050      60.0     59.9  
   1600x1024      60.2  
   1400x1050      60.0  
   1280x1024      60.0  
   1440x900       59.9  
   1280x960       60.0  
   1360x768       59.8     60.0  
   1152x864       60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
HDMI1 connected primary 1920x1080+1920+0 (normal left inverted right x axis y axis) 600mm x 340mm
   1920x1080      60.0*+   50.0     59.9  
   1680x1050      59.9  
   1600x900       60.0  
   1280x1024      60.0  
   1440x900       59.9  
   1280x720       60.0     50.0     59.9  
   1024x768       60.0  
   800x600        60.3  
   720x576        50.0  
   720x480        60.0     59.9  
   640x480        60.0     59.9  
   720x400        70.1  
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

在我的情况下,触摸设备ELAN20E7:00 04F3:20E7 id=13和触摸屏是eDP1为了解决问题,我需要映射该监视器的设备,为此我运行了此命令xinput map-to-output 13 eDP1

问题解决了,又能正常工作了:)

我正在使用 elementary OS freya,因此它应该适用于所有基于 Ubuntu 14.04 LTS 的发行版

答案3

很难找到解决方案,但实际上非常简单,只需按照此处“phnomic”的答案即可:触摸屏和额外的外部显示器. 与我的富士通 T730 及各种外接显示器完美配合!

答案4

至少对于 Wacom 触摸屏来说,还有一个问题,即它们在挂起和恢复循环后会停止工作。因此,必须先将它们重新连接起来,然后校准以用于双显示器。以下是同时满足这两个要求的解决方案:

  1. 使用我的其他答案创建(然后测试)自定义systemd服务,以便在系统从挂起状态恢复时重新连接触摸屏这里

  2. /usr/local/bin/local-touchscreen-tweaks创建一个包含以下内容的脚本:

    #!/usr/bin/env bash
    
    # We need to sleep about 2 seconds after the start of the wacom-inputattach 
    # service, or the touchscreen device will not yet be there to work with.
    sleep 2
    
    # xsetwacom needs to connect to an X server.
    export XAUTHORITY=/home/matthias/.Xauthority
    export DISPLAY=:0
    
    # Tell the touch devices to interpret input relative to the physical 
    # touchscreen display only, here LVDS-1. Needed in multi-monitor setups.
    # Use device names as seen in `xinput --list`.
    xsetwacom set "Wacom Serial Penabled 2FG Touchscreen Pen stylus" MapToOutput LVDS-1
    xsetwacom set "Wacom Serial Penabled 2FG Touchscreen Pen eraser" MapToOutput LVDS-1
    xsetwacom set "Wacom Serial Penabled 2FG Touchscreen Finger touch" MapToOutput LVDS-1
    
  3. 设置桌面环境以在 X 启动时执行该脚本,例如通过自动启动机制。通过服务执行此操作会更好systemd,但我还没有尝试过。

  4. 创建以下自定义服务,用于在系统从恢复中返回时执行脚本。它restart-wacom-inputattach在上述步骤 1 中创建的服务之后运行,使用演示的机制这里.为此,创建一个/etc/systemd/system/local-touchscreen-tweaks.service包含以下内容的文件:

    [Unit]
    Description=calibrate the touchscreen for dual-monitor usage
    After=restart-wacom-inputattach.service
    
    [Service]
    User=root
    Type=oneshot
    ExecStart=/usr/local/bin/local-touchscreen-tweaks
    TimeoutSec=0
    StandardOutput=syslog
    
    [Install]
    WantedBy=suspend.target
    
  5. 通过以下方式启用您的新定制服务:

    sudo systemctl enable /etc/systemd/system/local-touchscreen-tweaks.service
    

相关内容