다음을 사용하여 화면 회전을 반전하도록 설정할 수 있습니다.
xrandr -o inverted
xinput set-prop 'ELAN Touchscreen' 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1
다음을 사용하여 정상으로 돌아갑니다.
xrandr -o normal
xinput set-prop 'ELAN Touchscreen' 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1
여기에서 HowTo를 찾았습니다.https://wiki.ubuntu.com/X/InputCoordinateTransformation
따라서 (오른쪽으로 90°)는 다음과 같습니다.
# ⎡ 0 -1 1 ⎤
# ⎜ 1 0 0 ⎥
# ⎣ 0 0 1 ⎦
right='0 -1 1 1 0 0 0 0 1'
그런데 왼쪽 오른쪽 '좌표변환행렬'은 무엇일까요?
답변1
질문으로 판단하면 표준 좌표 변환 행렬입니다.
그래서:
⎡x_out⎤ ⎡ a b c ⎤ ⎡ x_in ⎤
⎜y_out⎥ = ⎜ d e f ⎥ * ⎜ y_in ⎥
⎣z_out⎦ ⎣ 0 0 1 ⎦ ⎣ z_in ⎦
z_out
= = 1 입니다 z_in
.
즉
x_out = a * x_in + b * y_in + c
y_out = d * x_in + e * y_in + f
오른쪽 회전에 대해 제공한 예제 행렬
⎡ 0 -1 1 ⎤
⎜ 1 0 0 ⎥
⎣ 0 0 1 ⎦
따라서 의미
x_out = 1 - y_in
y_out = x_in
왼쪽으로 회전하는 경우에는 그 반대가 됩니다. 즉:
x_out = y_in
y_out = 1 - x_in
매트릭스를 제공
⎡ 0 1 0 ⎤
⎜ -1 0 1 ⎥
⎣ 0 0 1 ⎦
답변2
마지막으로 누락된 매트릭스는 다음과 같습니다.
left='0 1 0 -1 0 1 0 0 1'
호출할 때마다 스크립트를 회전시키는 스크립트를 작성했습니다.
답변3
그래서 저는 노트북의 터치스크린과 터치패드에 대한 모든 변형을 가지고 있습니다. 트랙패드의 물리적 방향은 사용자 앞쪽, 사용자 키보드와 eDP1 사이에 있다고 가정합니다. x 디스플레이를 어떤 방향으로 회전시키든 마우스 커서는 트랙패드의 손가락과 함께 움직입니다. 나는 오래 전에 이것을 했고 논리를 잊어버렸습니다. 이제 xrandr -x
and 를 사용하여 x에 미러를 추가하고 y 변환에 미러를 추가했지만 xrandr -y
화면의 커서 움직임이 트랙패드의 손가락 움직임과 동일하도록 트랙패드의 매트릭스 좌표를 찾을 수 없습니다.
function rotate_left (){
xrandr --output "$connected" --rotate left
xinput set-prop "$touch" "Evdev Axis Inversion" 0, 1
xinput set-prop "$touch" "Evdev Axes Swap" 1
xinput set-prop "$pad" "$TRANSFORM" 0 -1 1 1 0 0 0 0 1
xinput set-prop "$touch" "$TRANSFORM" 0 -1 1 1 0 0 0 0 1
echo "left" >/etc/rotate
echo "icon:$camino/icons/left.png" >>"$track"/ayp
}; export -f rotate_left
function rotate_right (){
xrandr --output "$connected" --rotate right
xinput set-prop "$touch" "Evdev Axis Inversion" 0, 1
xinput set-prop "$touch" "Evdev Axes Swap" 1
xinput set-prop "$pad" "$TRANSFORM" 0 1 0 -1 0 1 0 0 1
xinput set-prop "$touch" "$TRANSFORM" 0 1 0 -1 0 1 0 0 1
echo "right" >/etc/rotate
echo "icon:$camino/icons/right.png" >>"$track"/ayp
}; export -f rotate_right
function rotate_inverted (){
xrandr --output "$connected" --rotate inverted
xinput set-prop "$touch" "Evdev Axis Inversion" 1, 1
xinput set-prop "$touch" "Evdev Axes Swap" 0
xinput set-prop "$pad" "$TRANSFORM" -1 0 1 0 -1 1 0 0 1
xinput set-prop "$touch" "$TRANSFORM" -1 0 1 0 -1 1 0 0 1
echo "inverted" >/etc/rotate
echo "icon:$camino/icons/inverted.png" >>"$track"/ayp
}; export -f rotate_inverted
function rotate_normal (){
xrandr --output "$connected" --rotate normal
xinput set-prop "$touch" "Evdev Axis Inversion" 1, 1
xinput set-prop "$touch" "Evdev Axes Swap" 1
xinput set-prop "$pad" "$TRANSFORM" 1 0 0 0 1 0 0 0 1
xinput set-prop "$touch" "$TRANSFORM" 1 0 0 0 1 0 0 0 1
echo "normal" >/etc/rotate
echo "icon:$camino/icons/normal.png" >>"$track"/ayp
}; export -f rotate_normal
function rotate_flipx {
xrandr -x
xinput set-prop "$touch" "Evdev Axis Inversion" 0,0
xinput set-prop "$touch" "Evdev Axes Swap" 0
xinput set-prop "$pad" "$TRANSFORM" 3 1 1 -1 1 1
xinput set-prop "$touch" "$TRANSFORM" -1 0 1 0 -1 1 0 0 1
};export -f rotate_flipx
function rotate_flipy {
xrandr -y
xinput set-prop "$touch" "Evdev Axis Inversion" 0, 0
xinput set-prop "$touch" "Evdev Axes Swap" 0
xinput set-prop "$pad" "$TRANSFORM" 3 1 1 -1 1 1
xinput set-prop "$touch" "$TRANSFORM" -1 0 1 0 -1 1 0 0 1
};export -f rotate_flipy
function rotate_flip_normal {
xrandr -o normal
xinput set-prop "$touch" "Evdev Axis Inversion" 0, 0
xinput set-prop "$touch" "Evdev Axes Swap" 0
xinput set-prop "$pad" "$TRANSFORM" 1 0 0 0 1 0 0 0 1
xinput set-prop "$touch" "$TRANSFORM" 1 0 0 0 1 0 0 0 1
};export rotate_flip_normal