#!/usr/bin/env bash

nibble="TPPS/2 IBM TrackPoint"
stylus="Wacom ISDv4 90 Pen stylus"
eraser="Wacom ISDv4 90 Pen eraser"

matrix="$(xinput list-props "$stylus" | awk '/Coordinate Transformation Matrix/{print $5$6$7$8$9$10$11$12$NF}')"

# Matrix declarations

normal="1 0 0 0 1 0 0 0 1"
normal_float="1.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,1.000000"

inverted="-1 0 1 0 -1 1 0 0 1"
inverted_float="-1.000000,0.000000,1.000000,0.000000,-1.000000,1.000000,0.000000,0.000000,1.000000"

left="0 -1 1 1 0 0 0 0 1"
left_float="0.000000,-1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000"

right="0 1 0 -1 0 1 0 0 1"

if [ "$matrix" == $normal_float ] && [ "$1" != "-n" ]; then
    xrandr -o inverted
    xinput set-prop "$stylus" 166 $inverted
    xinput set-prop ""$eraser"" 166 $inverted
    xinput set-prop ""$nibble"" 166 $inverted
elif [ "$matrix" == $inverted_float ] && [ "$1" != "-j" ] && [ "$1" != "-n" ]; then
    xrandr -o left
    xinput set-prop "$stylus" 166 $left
    xinput set-prop "$eraser" 166 $left
    xinput set-prop "$nibble" 166 $left
elif [ "$matrix" == $left_float ] && [ "$1" != "-j" ] && [ "$1" != "-n" ]; then
    xrandr -o right
    xinput set-prop "$stylus" 166 $right
    xinput set-prop "$eraser" 166 $right
    xinput set-prop "$nibble" 166 $right
else
    xrandr -o normal
    xinput set-prop "$stylus" 166 $normal
    xinput set-prop "$eraser" 166 $normal
    xinput set-prop "$nibble" 166 $normal
fi