xinputと同じタイプのマップタッチディスプレイ - どれがどれですか

xinputと同じタイプのマップタッチディスプレイ - どれがどれですか

私のLinuxコンピュータには、同じタイプのDELLタッチディスプレイが2つあります。 1つはHDMI-2に接続され、もう1つは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。次に、各IDを使用してxinput list-propsデバイスノードを見つけます。たとえば、次のようになります。

$ xinput list-props 12 | grep 'Device Node'
        Device Node (282):      "/dev/input/event6"

次に、udevadm infoそのパスを使用し、/dev/input/event6DEVPATHまたは2つのタッチスクリーン間で異なり、変更されないいくつかの行を見つけます。たとえば、次のようになります。

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.3USBソケットなどの特定の部品のみを識別できるように固有のものでなければなりません。 (運が良ければ、タッチスクリーンにこの出力に表示される固有のシリアル番号があるかもしれません)。

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

関連情報