如何映射外部触摸屏以在多显示器设置中忽略笔记本电脑?

如何映射外部触摸屏以在多显示器设置中忽略笔记本电脑?

Kubuntu 20.04 带扩展显示屏。笔记本电脑屏幕没有触摸屏。外接屏幕是触摸屏。当触摸外接屏幕的中心时,鼠标指向两个屏幕之间的边界。触摸屏的宽度计算为两个屏幕的宽度总和。

我怎样才能让触摸屏只适合外接屏幕?另外,这是一个便携式屏幕。所以我想让断开连接之间的更改永久生效。

sza@sza-Lenovo-ThinkBook-15-IIL:~$ xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech M705                             id=12   [slave  pointer  (2)]
⎜   ↳ Logitech K750                             id=13   [slave  pointer  (2)]
⎜   ↳ G2Touch Multi-Touch by G2TSP              id=9    [slave  pointer  (2)]
⎜   ↳ Elan Touchpad                             id=14   [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)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Integrated Camera: Integrated C           id=11   [slave  keyboard (3)]
    ↳ Ideapad extra buttons                     id=15   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=16   [slave  keyboard (3)]
    ↳ Logitech K750                             id=17   [slave  keyboard (3)]

sza@sza-Lenovo-ThinkBook-15-IIL:~$ xinput list-props 9
Device 'G2Touch Multi-Touch by G2TSP':
        Device Enabled (172):   1
        Coordinate Transformation Matrix (174): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Calibration Matrix (312):      1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Calibration Matrix Default (313):      1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Send Events Modes Available (295):     1, 0
        libinput Send Events Mode Enabled (296):        0, 0
        libinput Send Events Mode Enabled Default (297):        0, 0
        Device Node (298):      "/dev/input/event4"
        Device Product ID (299):        10900, 22093

sza@sza-Lenovo-ThinkBook-15-IIL:~$ xrandr
Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 16384 x 16384
eDP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
   1920x1080     60.06*+  60.01    59.97    59.96    59.93  
   ...
DP-1 connected 1920x1080+1920+0 (normal left inverted right x axis y axis) 344mm x 195mm
   1920x1080     60.00*+  50.00    59.94    30.00    29.97  
   ...
HDMI-1 disconnected (normal left inverted right x axis y axis)

答案1

您可能会发现以下内容xinput感兴趣的选项:

--map-to-output device crtc
    Restricts  the  movements  of  the absolute device to the RandR
    crtc. The output name must match a currently  connected  output
    (see  xrandr(1)).  If  the  NVIDIA binary driver is detected or
    RandR 1.2 or later is not available, a Xinerama output  may  be
    specified as "HEAD-N", with N being the Xinerama screen number.
    This option has no effect on relative devices.

根据您提供的信息,以下命令可能会执行您需要的操作:

xinput --map-to-output "G2Touch Multi-Touch by G2TSP" DP-1

如果此命令满足您的要求,您可以将udev其设置为在触摸屏连接时运行。但是,xinput直接调用时不起作用,因为udev它是在 X 之外运行的系统服务。需要在 X 内部创建一个可以通知的监视程序脚本udev

  • 安装inotify-tools

  • 创建观察器脚本。将其设置为在用户登录 X 后运行。这可以通过显示管理器或桌面环境完成,具体取决于您希望脚本为所有用户运行还是为选定用户运行。

    #!/usr/bin/env bash
    inotifywait -m /tmp |
       while read path action file; do
          if [[ "$file" =~ touchscreen-attach ]] ; then
             [[ "$action" = "OPEN" ]] &&
                sleep 1 &&
                xinput --map-to-output "G2Touch Multi-Touch by G2TSP" DP-1
          fi
       done
    
  • 用于lsusb获取触摸屏的设备 ID。其格式为 idVendor:idProduct(例如 2a94:564d)。

  • 创建文件/etc/udev/rules.d/10-touchscreen.rules

    ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="2a94", ATTRS{idProduct}=="564d", RUN+="touch /tmp/touchscreen-attach"
    

也可以看看:


杰克丹尼指出KDE 具有与图形输入板相关的输入设置。它们适用于我的 Wacom 平板电脑,但不适用于我的笔记本电脑触摸屏。如果这适用于您的外接触摸屏,则设置起来会比我上面描述的容易得多。

KDE 快捷方式 KDE 设置 KDE 重新映射输出

答案2

我做了同样的事情,但笔记本电脑是触摸的。也使用 kubuntu。如果您进入系统设置 > 输入设备 > 图形输入板。在那里,您选择名为“触摸”的选项卡,然后选择名为“将触摸区域映射到屏幕”的选项。单击“切换屏幕”以选择您希望触摸聚焦的屏幕。默认情况下,两个屏幕上都选中它。

您还可以检查此网站来创建一个脚本,该脚本将允许您在启动时自动选择监视器。

https://networks.guru/2018/11/23/using-dual-monitor-dual-touch-screens-on-ubuntu/

PS 该脚本仅在启动系统时有效。如果断开屏幕或更改为单屏,触摸可能会恢复为共享。仍在尝试弄清楚如何使更改永久生效或修改脚本以包括屏幕更改和连接/断开连接。

相关内容