Add tablet option to inputctl
This commit is contained in:
+62
-1
@@ -26,6 +26,9 @@ ${B}OPTIONS${N}
|
|||||||
|
|
||||||
${B}-s${N} ${U}STATE${N}
|
${B}-s${N} ${U}STATE${N}
|
||||||
Set touchscreen state, possible values: toggle, on/off, 1/0.
|
Set touchscreen state, possible values: toggle, on/off, 1/0.
|
||||||
|
|
||||||
|
${B}-t${N} ${U}STATE${N}
|
||||||
|
Set tablet state, possible values: ccw/normal/reset
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,7 +43,7 @@ export XAUTHORITY="$XDG_DATA_HOME/xorg/Xauthority"
|
|||||||
|
|
||||||
# Option handling
|
# Option handling
|
||||||
SCRIPT="$(basename "$0")"
|
SCRIPT="$(basename "$0")"
|
||||||
while getopts ':h?d:k:s:' opt; do
|
while getopts ':h?d:k:s:t:' opt; do
|
||||||
case $opt in
|
case $opt in
|
||||||
h)
|
h)
|
||||||
help
|
help
|
||||||
@@ -60,6 +63,11 @@ while getopts ':h?d:k:s:' opt; do
|
|||||||
ARG="$OPTARG"
|
ARG="$OPTARG"
|
||||||
DEV="pointer:04F3200A:00 04F3:2373"
|
DEV="pointer:04F3200A:00 04F3:2373"
|
||||||
;;
|
;;
|
||||||
|
t)
|
||||||
|
OPTION="t"
|
||||||
|
ARG="$OPTARG"
|
||||||
|
DEV="HUION Huion Tablet_HS64 Pen stylus"
|
||||||
|
;;
|
||||||
:)
|
:)
|
||||||
echo "$SCRIPT: option requires an argument '$OPTARG'"
|
echo "$SCRIPT: option requires an argument '$OPTARG'"
|
||||||
echo "Try '$SCRIPT -h' for more information."
|
echo "Try '$SCRIPT -h' for more information."
|
||||||
@@ -73,6 +81,9 @@ while getopts ':h?d:k:s:' opt; do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Enable mathematics in POSIX shell
|
||||||
|
calc() { awk "BEGIN{print $*}"; }
|
||||||
|
|
||||||
toggle_device() {
|
toggle_device() {
|
||||||
STATUS=$(xinput --list-props "$2" | awk '/Device Enabled/ { print $4 }')
|
STATUS=$(xinput --list-props "$2" | awk '/Device Enabled/ { print $4 }')
|
||||||
[ "$STATUS" -eq 1 ] && xinput --disable "$2" || xinput --enable "$2"
|
[ "$STATUS" -eq 1 ] && xinput --disable "$2" || xinput --enable "$2"
|
||||||
@@ -123,6 +134,53 @@ keyboard() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tablet() {
|
||||||
|
case "$1" in
|
||||||
|
ccw | normal)
|
||||||
|
;;
|
||||||
|
reset)
|
||||||
|
xsetwacom set "$2" ResetArea
|
||||||
|
xsetwacom set "$2" Rotate none
|
||||||
|
xsetwacom set "$2" MapToOutput "desktop"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "$SCRIPT: invalid argument '$1'"
|
||||||
|
echo "Try '$SCRIPT -h' for more information."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
screenDimensions=$(xrandr -q | grep primary | awk '{ print substr($4, 0, index($4, "+") - 1) }')
|
||||||
|
screenWidth=$(echo "$screenDimensions" | cut -d 'x' -f 1)
|
||||||
|
screenHeight=$(echo "$screenDimensions" | cut -d 'x' -f 2)
|
||||||
|
|
||||||
|
inputctl -t reset
|
||||||
|
|
||||||
|
tabletDimensions=$(xsetwacom get "$2" Area)
|
||||||
|
tabletWidth=$(echo "$tabletDimensions" | cut -d ' ' -f 3)
|
||||||
|
tabletHeight=$(echo "$tabletDimensions" | cut -d ' ' -f 4)
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
ccw)
|
||||||
|
calculatedWidth=$(calc "$tabletHeight * $screenHeight / $screenWidth")
|
||||||
|
offsetWidth=$(calc "($tabletWidth - $calculatedWidth) / 2")
|
||||||
|
calculatedWidth=$(calc "$calculatedWidth + $offsetWidth" | cut -d '.' -f 1)
|
||||||
|
|
||||||
|
xsetwacom set "$2" Area "$offsetWidth" 0 "$calculatedWidth" "$tabletHeight"
|
||||||
|
xsetwacom set "$2" Rotate ccw
|
||||||
|
;;
|
||||||
|
normal)
|
||||||
|
calculatedHeight=$(calc "$tabletWidth * $screenHeight / $screenWidth" | cut -d '.' -f 1)
|
||||||
|
offsetHeight=$(calc "($tabletHeight - $calculatedHeight) / 2")
|
||||||
|
|
||||||
|
xsetwacom set "$2" Area 0 "$offsetHeight" "$tabletWidth" "$calculatedHeight"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
xsetwacom set "$2" MapToOutput "${screenWidth}x${screenHeight}+0+0"
|
||||||
|
}
|
||||||
|
|
||||||
# Option execution
|
# Option execution
|
||||||
# if [ "$DEV" = "Keyboard" ]; then
|
# if [ "$DEV" = "Keyboard" ]; then
|
||||||
# keyboard "$ARG"
|
# keyboard "$ARG"
|
||||||
@@ -134,6 +192,9 @@ case "$OPTION" in
|
|||||||
k)
|
k)
|
||||||
keyboard "$ARG"
|
keyboard "$ARG"
|
||||||
;;
|
;;
|
||||||
|
t)
|
||||||
|
tablet "$ARG" "$DEV"
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Useful input diagnostics packages:
|
# Useful input diagnostics packages:
|
||||||
|
|||||||
Reference in New Issue
Block a user