持续映射多个触摸屏(当前会话锁定后或插入不同的 USB 端口时重置)

持续映射多个触摸屏(当前会话锁定后或插入不同的 USB 端口时重置)

我有一台触摸屏笔记本电脑(Thinkpad X1 Yoga Gen 2,Ubuntu 20.04),连接到外部触摸屏显示器。触摸屏的映射在插入时不起作用,所以我按照本指南将输入设备映射到相应的显示器。我按照指南操作并添加了一个~/.config/autostart/align_touchinput.desktop文件,以便每次登录时执行映射。

这是我的设置:

xinput
...
↳ Wacom Pen and multitouch sensor Finger touch  id=9    [slave  pointer  (2)]
↳ Wacom Pen and multitouch sensor Pen stylus    id=10   [slave  pointer  (2)]
↳ Wacom Pen and multitouch sensor Pen eraser    id=25   [slave  pointer  (2)]
↳ WingCoolTouch WingCoolTouch               id=18   [slave  pointer  (2)]
↳ WingCoolTouch WingCoolTouch               id=19   [slave  pointer  (2)]
....

xrandr
...
eDP-1 connected primary 2560x1440+3072+160 (normal left inverted right x axis y axis) 310mm x 174mm
HDMI-1 connected 3072x1728+0+0 (normal left inverted right x axis y axis) 344mm x 195mm
...

从上面可以看出,WingCoolTouch 和 HDMI-1 来自外部显示器。因此我让我的 PC 在启动时运行此脚本:

xinput map-to-output 18 HDMI-1
xinput map-to-output 19 HDMI-1
xinput map-to-output 9 eDP-1
xinput map-to-output 10 eDP-1
xinput map-to-output 24 eDP-1

但是,我面临两个问题:

  1. 每次我将笔记本电脑从睡眠/屏幕关​​闭状态唤醒时,映射总是会重置。有没有什么好办法可以解决这个问题?
  2. 因为这是一台笔记本电脑,所以我经常需要通过不同的 USB 端口插入触摸屏。这会改变从idxinput据我所知,xinput map-to-input允许按设备名称进行映射。但我的操作系统检测到多个同名设备,因此它不起作用(我收到“警告:有多个设备与‘WingCoolTouch WingCoolTouch’匹配”和错误)。有没有办法将所有命名的项都映射WingCoolTouch到,HDMI-1以便无论我使用哪个 USB 端口,映射都能正常工作

答案1

遇到了同样的问题,写了一个脚本:

#! /bin/bash

one=$(xinput --list | grep -F 'WingCoolTouch' | grep -Po '(?<=id=)\d\d?' | head -n 1)
two=$(xinput --list | grep -F 'WingCoolTouch' | grep -Po '(?<=id=)\d\d?' | tail -n 1)

xinput map-to-output $one HDMI-1
xinput map-to-output $two HDMI-1

相关内容