Структура матрицы для вращения экрана

Я могу настроить поворот экрана на инвертированное:

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' 

Но что такое «матрица трансформации координат» слева?

Судя по этому вопросу, это стандартная матрица преобразования координат.

Так:

 ⎡x_out⎤ ⎡ abc ⎤ ⎡ x_in ⎤ ⎜y_out⎥ = ⎜ def ⎥ * ⎜ y_in ⎥ ⎣z_out⎦ ⎣ 0 0 1 ⎦ ⎣ z_in ⎦ 

с z_out = z_in = 1.

Т.е.

 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 ⎦ 

Последняя пропавшая матрица будет

 left='0 1 0 -1 0 1 0 0 1' 

Мне удалось написать скрипт, который поворачивает скрипт каждый раз, когда вы его вызываете:

https://gist.github.com/rubo77/daa262e0229f6e398766