Created
October 8, 2017 13:13
-
-
Save max-te/c914843bed23a31d29194d4ef9358b43 to your computer and use it in GitHub Desktop.
Automatic xinput transformation matrix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function matrix(name, a,b,c, d,e,f, g,h,i){ | |
name[1,1] = a | |
name[1,2] = b | |
name[1,3] = c | |
name[2,1] = d | |
name[2,2] = e | |
name[2,3] = f | |
name[3,1] = g | |
name[3,2] = h | |
name[3,3] = i | |
} | |
function matrix_mult(prod, left, right) { | |
for(i=1; i<=3; i++){ | |
for(j=1; j<=3; j++){ | |
prod[i,j] = 0 | |
for(k=1; k<=3; k++){ | |
prod[i,j] += left[i,k] * right[k,j] | |
} | |
} | |
} | |
} | |
function matrix_print(name){ | |
print name[1,1], name[1,2], name[1,3], name[2,1], name[2,2], name[2,3], name[3,1], name[3,2], name[3,3] | |
} | |
$1 == "Screen" { | |
sw = int( $8) | |
sh = int($10) | |
} | |
$1 == inp { | |
n = split($4, geom, /[x\+]/) | |
w = int(geom[1]) | |
h = int(geom[2]) | |
x = int(geom[3]) | |
y = int(geom[4]) | |
rot = $5 | |
} | |
END { | |
switch(rot){ | |
case "(normal": | |
matrix(rotrix, 1,0,0, 0,1,0, 0,0,1) | |
break | |
case "left": | |
matrix(rotrix, 0,-1,1, 1,0,0, 0,0,1) | |
break | |
case "right": | |
matrix(rotrix, 0,1,0, -1,0,1, 0,0,1) | |
break | |
case "inverted": | |
matrix(rotrix, -1,0,1, 0,-1,1, 0,0,1) | |
break | |
} | |
#matrix_print(rotrix) | |
matrix(geotrix, w/sw,0,x/sw, 0,h/sh,y/sh, 0,0,1) | |
#matrix_print(geotrix) | |
matrix_mult(transform, geotrix, rotrix) | |
matrix_print(transform) | |
#print sw, sh | |
#print w,h,x,y, rot | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
transform=$(xrandr -q | awk -v inp="eDP-1" -f rot.awk) | |
xinput set-prop "Wacom Co.,Ltd. Pen and multitouch sensor Pen stylus" --type=float "Coordinate Transformation Matrix" $transform | |
xinput set-prop "Wacom Co.,Ltd. Pen and multitouch sensor Pen eraser" --type=float "Coordinate Transformation Matrix" $transform | |
xinput set-prop "Wacom Co.,Ltd. Pen and multitouch sensor Finger touch" --type=float "Coordinate Transformation Matrix" $transform |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment