#!/bin/sh

mkdir -p /run/udev/rules.d/
if [ "$(cat /proc/device-tree/model)" = "Anbernic RG ARC-D" ] && [[ ! -f "/run/udev/rules.d/99-goodix-touchscreen.rules" ]]; then
echo "99-goodix-touchscreen.rules not found! Create one..."
cat > /run/udev/rules.d/99-goodix-touchscreen.rules << EOF;
ACTION=="add|change", KERNEL=="event*", ATTRS{name}=="gt927", ENV{LIBINPUT_CALIBRATION_MATRIX}="0 -1 1 1 0 0"
EOF
udevadm control --reload-rules && udevadm trigger
elif [ "$(cat /proc/device-tree/model)" = "Anbernic RG DS" ] && [[ ! -f "/run/udev/rules.d/99-goodix-touchscreen.rules" ]]; then
echo "99-goodix-touchscreen.rules not found! Create one..."
cat > /run/udev/rules.d/99-goodix-touchscreen.rules << EOF;
SUBSYSTEM=="input", KERNEL=="event*", ENV{ID_INPUT_TOUCHSCREEN}=="1", ENV{ID_PATH}=="platform-fe5c0000.i2c", ENV{LIBINPUT_CALIBRATION_MATRIX}="0.5 0 0 0 1 0"
SUBSYSTEM=="input", KERNEL=="event*", ENV{ID_INPUT_TOUCHSCREEN}=="1", ENV{ID_PATH}=="platform-fe5e0000.i2c", ENV{LIBINPUT_CALIBRATION_MATRIX}="0.5 0 0.5 0 1 0"
EOF
udevadm control --reload-rules && udevadm trigger
elif [ "$(cat /proc/device-tree/model)" != "Anbernic RG ARC-D" ] && [[ -f "/run/udev/rules.d/99-goodix-touchscreen.rules" ]]; then
echo "99-goodix-touchscreen.rules found on non-compatible device! Removing rule..."
rm -f /run/udev/rules.d/99-goodix-touchscreen.rules
elif [ "$(cat /proc/device-tree/model)" = "Anbernic RG ARC-D" ] && [[ -f "/run/udev/rules.d/99-goodix-touchscreen.rules" ]]; then
echo "99-goodix-touchscreen.rules found on compatible device! All OK, exiting"
elif [ "$(cat /sys/devices/virtual/dmi/id/product_name)" = "T8S" ]; then
echo "X86_64 MIG Tablet"
cat > /run/udev/rules.d/90-goodix-MIG-touchscreen.rules << EOF
ACTION=="add|change", KERNEL=="event*", ATTRS{name}=="GDIX1002:00", ENV{LIBINPUT_CALIBRATION_MATRIX}="-1 0 1 0 -1 1"
EOF
udevadm control --reload-rules && udevadm trigger
elif [[ -f /run/udev/rules.d/90-goodix-MIG-touchscreen.rules ]]; then
echo "Udev rule is exist, exiting"
exit 0
fi
