与xinput同类型的地图触摸显示屏——哪个是哪个

与xinput同类型的地图触摸显示屏——哪个是哪个

在我的 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

相关内容