Dê uma olhada na documentação oficial da matriz de transformação de coordenadas do libinput: https://wayland.freedesktop.org/libinput/doc/1.1.0/group__config.html#ga09a798f58cc601edd2797780096e9804
Perto do final afirma que:
Observe que qualquer rotação requer um componente de translação adicional para converter as coordenadas giradas de volta ao espaço original do dispositivo.
Como esses componentes de tradução são determinados. A matriz de transformação para girar as coordenadas 90 graus no sentido anti-horário é:
0 1 0
-1 0 1
0 0 0
As coordenadas de translação neste caso são 0
e 1
.
Isso parece álgebra linear reta para mim. Eu verifiquei o link para ver o que você estava falando. A primeira imagem que eles têm quando a página começa no assunto de rotação é preenchida com cossenos e senos. A coisa a perceber é que o cos(a), sin(a), -cos(a) etc todos se tornam 1's e 0's (possivelmente -1 também) quando você está lidando com rotação em incrementos de 90 graus. Para mim, esta é realmente uma questão de matemática. Confira a página da wikipedia sobre matrizes de rotação como referência: https://en.wikipedia.org/wiki/Rotation_matrix .
Sobre a tradução de volta ao espaço original; se a "origem" não estiver no centro, a rotação afasta alguns elementos da posição absoluta original. Este artigo fala mais especificamente sobre mapeamento de dispositivos e computação gráfica e inclui informações sobre a tradução e também fatores de escala (consulte a seção Transformações afins). https://en.wikipedia.org/wiki/Transformation_matrix