Renamed sxmo_gesturehandler.sh to sxmo_inputhandler.sh (after Sam Bowly's patches), renamed gesture hook to inputhandler hook. Removed hotcorner script and powerbutton scripts and their hooks (now all handled by inputhandler and its hook).

This commit is contained in:
Maarten van Gompel 2021-04-10 13:47:22 +02:00
parent a7e8b39165
commit 21379b7914
4 changed files with 42 additions and 70 deletions

181
scripts/core/sxmo_inputhandler.sh Executable file
View file

@ -0,0 +1,181 @@
#!/usr/bin/env sh
# This script handles input actions, it is called by lisgd for gestures
# and by dwm for button presses
ACTION="$1"
# include common definitions
# shellcheck source=scripts/core/sxmo_common.sh
. "$(dirname "$0")/sxmo_common.sh"
XPROPOUT="$(xprop -id "$(xdotool getactivewindow)")"
WMCLASS="$(echo "$XPROPOUT" | grep WM_CLASS | cut -d ' ' -f3- | cut -d ' ' -f1 | tr -d '\",')"
HANDLE=1
if [ -x "$XDG_CONFIG_HOME"/sxmo/hooks/inputhandler ]; then
#hook script must exit with a zero exit code ONLY if it has handled the gesture!
"$XDG_CONFIG_HOME"/sxmo/hooks/inputhandler "$WMCLASS" "$@"
HANDLE=$?
fi
if [ "$HANDLE" -ne 0 ]; then
#special context-sensitive handling
case "$WMCLASS" in
"foxtrotgps")
# E.g. just a check to ignore 1-finger gestures in foxtrotgps
if [ "$ACTION" != "killwindow" ]; then
HANDLE=0
fi
;;
"st-256color")
# First we try to handle the app running inside st:
WMNAME=$(echo "$XPROPOUT" | grep -E "^WM_NAME" | cut -d ' ' -f3-)
if echo "$WMNAME" | grep -i -w tuir; then
if [ "$ACTION" = "enter" ]; then
xdotool key o
HANDLE=0
elif [ "$ACTION" = "back" ]; then
xdotool key s
HANDLE=0
fi
fi
;;
esac
fi
if [ "$HANDLE" -ne 0 ]; then
#standard handling
case "$ACTION" in
"prevdesktop")
xdotool key --clearmodifiers Alt+Shift+e
;;
"nextdesktop")
xdotool key --clearmodifiers Alt+Shift+r
;;
"moveprevdesktop")
xdotool key --clearmodifiers Alt+e
;;
"movenextdesktop")
xdotool key --clearmodifiers Alt+r
;;
"unmute")
sxmo_vol.sh unmute &
;;
"mute")
sxmo_vol.sh mute &
;;
"brightnessup")
sxmo_brightness.sh up &
;;
"brightnessdown")
sxmo_brightness.sh down &
;;
"volup")
sxmo_vol.sh up &
;;
"voldown")
sxmo_vol.sh down &
;;
"showkeyboard")
sxmo_keyboard.sh open
;;
"hidekeyboard")
sxmo_keyboard.sh close
;;
"showmenu")
pidof dmenu || setsid -f sxmo_appmenu.sh &
;;
"showsysmenu")
pidof dmenu || setsid -f sxmo_appmenu.sh sys &
;;
"hidemenu")
pkill -9 dmenu
;;
"closewindow")
sxmo_killwindow.sh close
;;
"killwindow")
sxmo_killwindow.sh
;;
"scrollup_long")
xdotool key Prior
;;
"scrolldown_long")
xdotool key Next
;;
"scrollup_med")
xdotool key Up Up Up
;;
"scrolldown_med")
xdotool key Down Down Down
;;
"scrollup_short")
xdotool key Up
;;
"scrolldown_short")
xdotool key Down
;;
"scrollleft_short")
xdotool key Left
;;
"scrollright_short")
xdotool key Right
;;
"enter")
xdotool key Return
;;
"back")
xdotool key BackSpace
;;
"powerbutton_one")
if echo "$WMCLASS" | grep -i "megapixels"; then
xdotool key --clearmodifiers "space"
else
sxmo_keyboard.sh toggle
fi
;;
"powerbutton_two")
sxmo_blinkled.sh blue && $TERMCMD -e "$SHELL"
;;
"powerbutton_three")
sxmo_blinkled.sh blue && $BROWSER
;;
"volup_one")
sxmo_appmenu.sh
;;
"volup_two")
sxmo_appmenu.sh sys
;;
"volup_three")
sxmo_lock.sh
;;
"voldown_one")
xdotool key --clearmodifiers Alt+space
;;
"voldown_two")
xdotool key --clearmodifiers Alt+Return
;;
"voldown_three")
sxmo_blinkled.sh red && xdotool windowkill "$(xdotool getactivewindow)"
;;
"voldown_four")
sxmo_blinkled.sh red & xdotool windowclose "$(xdotool getactivewindow)"
;;
"topleftcorner")
sxmo_appmenu.sh sys &
;;
"toprightcorner")
;;
"bottomleftcorner")
sxmo_lock.sh &
;;
"bottomrightcorner")
sxmo_rotate.sh &
;;
*)
#fallback, just execute the command
"$@"
;;
esac
fi