Ich kann meine Bildschirmdrehung wie folgt invertieren:
xrandr -o inverted
xinput set-prop 'ELAN Touchscreen' 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1
und zurück zum Normalzustand mit:
xrandr -o normal
xinput set-prop 'ELAN Touchscreen' 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1
Ein HowTo habe ich hier gefunden:https://wiki.ubuntu.com/X/InputCoordinateTransformation
Ich schätze also, dass es für (90° nach rechts) folgendermaßen aussehen wird:
# ⎡ 0 -1 1 ⎤
# ⎜ 1 0 0 ⎥
# ⎣ 0 0 1 ⎦
right='0 -1 1 1 0 0 0 0 1'
Aber was ist die rechte „Koordinatentransformationsmatrix“ links?
Antwort1
Der Frage nach zu urteilen handelt es sich um eine Standard-Koordinatentransformationsmatrix.
Also:
⎡x_out⎤ ⎡ a b c ⎤ ⎡ x_in ⎤
⎜y_out⎥ = ⎜ d e f ⎥ * ⎜ y_in ⎥
⎣z_out⎦ ⎣ 0 0 1 ⎦ ⎣ z_in ⎦
mit z_out
= z_in
= 1.
Dh
x_out = a * x_in + b * y_in + c
y_out = d * x_in + e * y_in + f
Die von Ihnen angegebene Beispielmatrix für die Rechtsdrehung
⎡ 0 -1 1 ⎤
⎜ 1 0 0 ⎥
⎣ 0 0 1 ⎦
bedeutet also
x_out = 1 - y_in
y_out = x_in
Beim Drehen nach links wäre es umgekehrt, also:
x_out = y_in
y_out = 1 - x_in
gibt die Matrix an
⎡ 0 1 0 ⎤
⎜ -1 0 1 ⎥
⎣ 0 0 1 ⎦
Antwort2
Die letzte fehlende Matrix wird
left='0 1 0 -1 0 1 0 0 1'
Es ist mir gelungen, ein Skript zu schreiben, das bei jedem Aufruf das Skript rotiert:
Antwort3
Ich habe also alle Transformationen für Touchscreen und Touchpad auf einem Laptop ... die physische Ausrichtung des Trackpads wird vor dem Benutzer angenommen, zwischen Benutzertastatur und eDP1. Egal, in welche Richtung ich das X-Display drehe, der Mauszeiger bewegt sich im Einklang mit dem Finger auf dem Trackpad. Ich habe das vor Ewigkeiten gemacht und die Logik vergessen. Jetzt habe ich mit und die Transformationen „Spiegelung auf X“ und „Spiegelung auf Y“ hinzugefügt xrandr -x
, xrandr -y
aber ich kann die Matrixkoordinaten für das Trackpad nicht finden, sodass die Cursorbewegung auf dem Bildschirm der Fingerbewegung auf dem Trackpad entspricht.
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