xinput과 동일한 유형의 지도 터치 디스플레이 - 어느 것이 어느 것인지

xinput과 동일한 유형의 지도 터치 디스플레이 - 어느 것이 어느 것인지

내 Linux 컴퓨터에는 동일한 유형의 DELL 터치 디스플레이가 2개 있습니다. 하나는 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입니다. 그런 다음 각 ID를 사용하여 xinput list-props장치 노드를 찾습니다. 예를 들면 다음과 같습니다.

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

그런 다음 udevadm info해당 경로를 사용하고 /dev/input/event6DEVPATH 또는 두 터치스크린 간에 다르며 변경되지 않는 일부 줄을 찾습니다. 예를 들면 다음과 같습니다.

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 소켓 과 같은 특정 부품만 식별할 수 있을 만큼 고유해야 합니다. (운이 좋다면 터치스크린에 이 출력에 표시되는 고유한 일련 번호가 있을 수 있습니다.) 실험해 볼 수 있는 몇 가지 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

관련 정보