在我的 Linux 机器上,我有 2 个完全相同类型的 DELL 触摸显示屏。一个连接到 HDMI-2,另一个连接到 DP-1。映射我使用的触摸屏
sudo xinput --map-to-output _ID1_ HDMI-2
sudo xinput --map-to-output _ID2_ DP-2
问题是每次我断开并重新连接触摸设备的 USB 时,ID 都会发生变化...通常它会在识别码1和识别号2从而反转两个显示屏上的触摸。我需要一种方法来确定分配给每个监视器的 ID。有没有办法跟踪显示器特有的一些属性来识别它们?谢谢
洛伦佐
答案1
如果您始终对触摸屏使用相同的 USB 插座,则可以将 xinput 使用的设备 ID 转换为该设备在 USB 总线上的固定“路径”。用于xinput list
按名称查找触摸屏的 2 个 ID。然后使用xinput list-props
每个 id 并查找设备节点,例如:
$ xinput list-props 12 | grep 'Device Node'
Device Node (282): "/dev/input/event6"
然后udevadm info
在该路径上使用/dev/input/event6
并查找 DEVPATH 或两个触摸屏之间不同且不会更改的某些行,例如:
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4.3/2-1.4.3:1.0/0003:1111:9999.0005/input/input6/event6
该路径显示了总线上事件的来源。只是某些部分,例如2-1.4.3
应该足够唯一以识别 USB 插座。 (如果幸运的话,触摸屏可能有一些唯一的序列号,可以在此输出中显示)。这里有几行 bash 可供实验:
name='The Touchscreen Name'
ids=$(xinput --list |awk -Fid= "/$name/"'{print $2+0}')
for id in $ids
do event=$(xinput list-props "$id" | awk -F'"' '/Device Node/{print $2}')
path=$(udevadm info "$event" |
awk -F/ '/DEVPATH=/{printf "%s %s %s\n",$7,$8,$9}')
echo "$id $path"
done