Fedora Silverblue를 플래싱한 태블릿이 있는데 장치가 가로 모드일 때 터치스크린의 Y축이 반전되고 세로 모드에서는 X축이 반전됩니다.
xorg에서 Wayland의 xinput 사용을 비활성화했지만 지금까지는 운이 없습니다.
이것은 태블릿의 현재 매트릭스입니다:
Landscape (Clockwise 90°) Portrait
[ 0 -1 0 ] [ 1 0 0 ]
[ 1 0 0 ] [ 0 1 0 ]
[ 0 0 1 ] [ 0 0 1 ]
현재 행렬이 세로 모드인 경우 Y축은 정상이지만 X축은 반전됩니다. 반전을 해결할 수 있는 방법이 있나요?
가로 행렬(아래)의 역행렬을 적용해 보았지만 이는 가로의 역방향 Y축을 역방향 X축으로 뒤집을 뿐입니다.
xinput set-prop ID "Coordinate Transformation Matrix" 0 1 0 -1 0 1 0 0 1
[ 0 1 0 ]
[ -1 0 1 ]
[ 0 0 1 ]
참고: 이는 여기에 있는 질문과 유사합니다.
xorg.conf를 사용하여 터치 스크린 X축 반전 수정
그 외에도 xinput을 통해 축을 복원하는 방법을 알아내려고 노력 중입니다.
답변1
약간의 시행착오가 있었지만 이것이 제가 생각해낸 해결책입니다.
다음을 통해 터치 스크린 장치를 찾으십시오
xinput
.xinput
사용될 장치 ID를 기록해 두십시오.
10
현재 화면 회전에서 현재 사용 중인 장치의 매트릭스를 찾습니다(이 경우):xinput list-props 10 | grep Matrix
이 예에서는 태블릿 화면이 시계 방향으로 90° 회전됩니다.
Coordinate Transformation Matrix (179): 0.000000, -1.000000, 1.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000
번역하면 다음과 같습니다.
x: [ 0 -1 1 ] y: [ 1 0 0 ] z: [ 0 0 1 ]
태블릿이 가로 방향으로 시계 방향으로 90° 회전할 때 Y축의 역수가 필요하므로 행렬의 역수가 필요합니다. (모든 온라인 매트릭스 계산기가 가능합니다).
위 행렬의 역은 다음과 같습니다.
x: [ 0 1 0 ] y: [ -1 0 1 ] z: [ 0 0 1 ]
Y축만 반전시키려고 하므로 행렬에서 Y 값을 선택하여 원래 행렬로 만듭니다.
이는 최종 단계로 이어집니다. 즉, 터치 스크린의 반전된 축을 "고정"하기 위한 최종 행렬을 얻는 것입니다.
x: [ 0 -1 1 ] (taken from the original maxtrix) y: [ -1 0 1 ] (taken from the inverse matrix) z: [ 0 0 1 ]
그리고 터치 스크린을 "수정"하는 명령은 다음과 같습니다.
xinput set-prop 10 "Coordinate Transformation Matrix" 0 -1 1 -1 0 1 0 0 1
udev
이제 마지막 단계는 다른 화면 방향에 대해 위 단계를 반복하고 다른 방법을 통해 변경 사항을 영구적으로 적용하는 것입니다.