다음 문제가 버그인지 아니면 xinput 사용의 제한인지 확실하지 않습니다.
설정은 다음과 같습니다. 2개의 nvidia 그래픽 카드는 xscreen0에 4개의 터치 스크린, xscreen1에 2개의 스크린으로 구성되며 그 중 1개만 터치 스크린입니다.
변환 행렬을 조정하여 터치 장치의 위치에 따라 조정할 수 있었습니다. 터치 장치가 xscreen0(DISPLAY=:0.0)에 있는 한 모든 것이 잘 작동합니다. xscreen1에 터치 장치를 추가하려고 하면 매우 이상한 동작이 발생합니다.
각 화면은 1920x1080이고 xscreen0의 화면은 90° 회전되었으며 서로 정렬되어 있습니다.
이제 이 문제에 대해 이야기해 보겠습니다.
xinput을 사용하여 올바른 변환 행렬을 사용하여 터치 장치를 DISPLAY=:0.1
화면에 할당하면 일반적으로 올바른 좌표를 갖게 됩니다. 왜냐하면 점을 터치한 다음 마우스를 움직이면 마우스 포인터가 터치한 곳에서 정확하게 움직이기 시작하기 때문입니다.
그러나 마우스 클릭 이벤트가 올바른 위치에 있지 않고 터치 스크린으로 창을 이동하려고 할 때마다 화면에서 완전히 뛰어내린 후 그대로 유지됩니다(이것이 마우스 움직임이 어디로 점프하는지 보는 방법입니다).
즉, 클릭 이벤트와 이동 및 기타 사항이 제대로 작동하지 않기 때문에 실제로 터치스크린의 터치를 사용할 수 없다는 의미입니다. 그래서 제 질문은 이 특정 터치 장치가 xscreen1에 할당되어 있음을 시스템에 알릴 수 있느냐는 것입니다. xorg.conf 또는 xinput의 다른 매개변수 변경처럼요?
정보:
xinput_calibrator도 전혀 작동하지 않기 때문에 xinput을 통해 수동으로 수행합니다.
xinput 버전은 1.6.1입니다.
evtest를 통해 터치 장치가 올바른 좌표를 제공하는 것을 확인했습니다.
또한 xscreen0의 화면에 터치 장치를 할당하면 제대로 작동하고 마우스 클릭도 제대로 작동합니다.
편집: 장비 소품을 추가했는데 뭔가 빠졌을 수도 있습니다.
Device 'AFO Co., Ltd. AFO TCM10J-400 HID':
Device Enabled (153): 1
Coordinate Transformation Matrix (155): 1.000000, 0.000000, 0.000000, 0.000000, 0.147540, 0.704920, 0.000000, 0.000000, 1.000000
Device Accel Profile (304): 0
Device Accel Constant Deceleration (305): 1.000000
Device Accel Adaptive Deceleration (306): 1.000000
Device Accel Velocity Scaling (307): 10.000000
Device Product ID (296): 9590, 3
Device Node (297): "/dev/input/event24"
Evdev Axis Inversion (308): 0, 0
Evdev Axis Calibration (309): <no items>
Evdev Axes Swap (310): 0
Axis Labels (311): "Abs MT Position X" (302), "Abs MT Position Y" (303), "None" (0), "None" (0)
Button Labels (312): "Button Unknown" (299), "Button Unknown" (299), "Button Unknown" (299), "Button Wheel Up" (159), "Button Wheel Down" (160)
Evdev Scrolling Distance (313): 0, 0, 0
Evdev Middle Button Emulation (314): 0
Evdev Middle Button Timeout (315): 50
Evdev Third Button Emulation (316): 0
Evdev Third Button Emulation Timeout (317): 1000
Evdev Third Button Emulation Button (318): 3
Evdev Third Button Emulation Threshold (319): 20
Evdev Wheel Emulation (320): 0
Evdev Wheel Emulation Axes (321): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (322): 10
Evdev Wheel Emulation Timeout (323): 200
Evdev Wheel Emulation Button (324): 4
Evdev Drag Lock Buttons (325): 0
답변1
그런데 마우스 클릭 이벤트가 올바른 위치에 있지 않고, 터치스크린으로 창을 이동하려고 할 때마다 화면에서 완전히 벗어나 그 자리에 머물러 있습니다(그래서 마우스 움직임이 원래 위치로 점프하는 것을 볼 수 있습니다).
축하합니다. 버그를 발견한 것 같습니다. 손가락을 움직일 때 올바른 좌표가 표시되지만 클릭할 때 클릭 이벤트의 좌표가 동일한 좌표를 가지지 않는다면 버그를 발견한 것입니다.
이를 신고해 주세요. 하나의 터치스크린으로 0:0으로 재현한 다음 하나의 터치스크린으로 0:1로 재현할 수 있다면 테스트하기가 더 쉬울 것입니다.
또 다른 질문은 터치 스크린이 90° 회전합니까? 이것과 관련이 있을 수도 있고, 돌리지 않으려고 노력할 수도 있습니다... 그 외에는 냄새가 납니다.
로 가주세요https://en.opensuse.org/openSUSE:Submitting_bug_reports오류를 보고합니다.