~flimflam: 3 Add hooks directory and android_buttons hook Fix android_buttons hook for sxmo-utils-1.5.2.1 Fix android_buttons hook for suspend state 5 files changed, 135 insertions(+), 13 deletions(-)
Thanks, I have applied this patch with some other housekeeping: To git.sr.ht:~anjan/sxmo-userscripts c197dcc..f495f2b master -> master Take care Anjandev Momi -- w:] www.momi.ca pgp:] https://momi.ca/publickey.txt
Copy & paste the following snippet into your terminal to import this patchset into git:
curl -s https://lists.sr.ht/~anjan/public-inbox/patches/25725/mbox | git am -3Learn more about email & git
From: David Kennedy <qpg7x5@masqt.com> --- hooks/README.md | 35 ++++++++++++++++++++++ hooks/inputhandler/README.md | 17 +++++++++++ hooks/inputhandler/android_buttons | 48 ++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 hooks/README.md create mode 100644 hooks/inputhandler/README.md create mode 100755 hooks/inputhandler/android_buttons diff --git a/hooks/README.md b/hooks/README.md new file mode 100644 index 0000000..3b933b0 --- /dev/null +++ b/hooks/README.md @@ -0,0 +1,35 @@ +# User hooks + +This directory contains example hooks contributed by the community. + +# Usage + +To use one of these hooks, copy it to `$XDG_CONFIG_HOME/sxmo/hooks/[name]`, +where `[name]` is the name of the directory containing the file, and make it +executable. + +For example: + +``` +$ cp inputhandler/android_buttons $XDG_CONFIG_HOME/sxmo/hooks/inputhandler +$ chmod u+x $XDG_CONFIG_HOME/sxmo/hooks/inputhandler +``` + +# Contributing + +Add your own hooks under a directory corresponding to the hook name and rename +the file itself something descriptive. This way, we can have multiple examples +of each type of hook organized like so: + +``` +hooks/ + inputhandler/ + README.md + android_buttons + inverted_volume + ... +``` + +Please also add a brief description of your hook to the README in its parent +directory. + diff --git a/hooks/inputhandler/README.md b/hooks/inputhandler/README.md new file mode 100644 index 0000000..ebda088 --- /dev/null +++ b/hooks/inputhandler/README.md @@ -0,0 +1,17 @@ +# inputhandler hooks + +This directory contains example inputhandler hooks. + +# Caveats + +As of version 1.5.1, this hook is only executed when the screen is unlocked. +It's not possible to modify the behavior of the power button when locked. + +# Contents + +## android_buttons +- Author: David Kennedy +- License: WTFPL +- Description: Modifies the hardware button behavior to mimic a typical Android + device. + diff --git a/hooks/inputhandler/android_buttons b/hooks/inputhandler/android_buttons new file mode 100755 index 0000000..99310a8 --- /dev/null +++ b/hooks/inputhandler/android_buttons @@ -0,0 +1,48 @@ +#!/bin/sh + +# This hook modifies the hardware button behavior to mimic a typical Android +# device, i.e.: +# +# - The power button locks the screen and turns it off +# - The volume up button turns the volume up +# - The volume down button turns the volume down +# +# It also adds a couple features that don't normally exist on Android: +# +# - Holding the power button enters CRUST suspend +# - Holding the volume down button mutes the volume +# +# You still have to hold down the power button to unlock the screen. + +WMCLASS="$1" +WMNAME="$2" +ACTION="$3" + +# You must exit 0 if you handled the input to not trigger default behaviors + +case "$ACTION" in + powerbutton_three) + sxmo_screenlock.sh crust + exit 0 + ;; + powerbutton_*) + sxmo_screenlock.sh off + exit 0 + ;; + volup_*) + sxmo_vol.sh unmute + sxmo_vol.sh up + exit 0 + ;; + voldown_three) + sxmo_vol.sh mute + exit 0 + ;; + voldown_*) + sxmo_vol.sh down + exit 0 + ;; +esac + +exit 1 + -- 2.32.0
From: David Kennedy <qpg7x5@masqt.com> --- hooks/inputhandler/android_buttons | 33 +++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/hooks/inputhandler/android_buttons b/hooks/inputhandler/android_buttons index 99310a8..2db27c0 100755 --- a/hooks/inputhandler/android_buttons +++ b/hooks/inputhandler/android_buttons @@ -3,16 +3,13 @@ # This hook modifies the hardware button behavior to mimic a typical Android # device, i.e.: # -# - The power button locks the screen and turns it off +# - The power button toggles the display on or off # - The volume up button turns the volume up # - The volume down button turns the volume down # -# It also adds a couple features that don't normally exist on Android: +# In addition: # -# - Holding the power button enters CRUST suspend # - Holding the volume down button mutes the volume -# -# You still have to hold down the power button to unlock the screen. WMCLASS="$1" WMNAME="$2" @@ -20,13 +17,29 @@ ACTION="$3" # You must exit 0 if you handled the input to not trigger default behaviors +DEBUG=0 + +debug_log() { + [ $DEBUG -eq 0 ] && return + echo "$@" >> inputhandler-hook.log +} + +toggle_screenlock() { + local action="$1" + local state="$(sxmo_screenlock.sh getCurState)" + + if [ "$state" = off ]; then + debug_log "action=$action, old state=$state, new state=unlock" + sxmo_screenlock.sh unlock + else + debug_log "action=$action, old state=$state, new state=off" + sxmo_screenlock.sh off + fi +} + case "$ACTION" in - powerbutton_three) - sxmo_screenlock.sh crust - exit 0 - ;; powerbutton_*) - sxmo_screenlock.sh off + toggle_screenlock "$ACTION" exit 0 ;; volup_*) -- 2.32.0
From: David Kennedy <qpg7x5@masqt.com> --- hooks/inputhandler/android_buttons | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/hooks/inputhandler/android_buttons b/hooks/inputhandler/android_buttons index 2db27c0..47ec920 100755 --- a/hooks/inputhandler/android_buttons +++ b/hooks/inputhandler/android_buttons @@ -28,11 +28,20 @@ toggle_screenlock() { local action="$1" local state="$(sxmo_screenlock.sh getCurState)" - if [ "$state" = off ]; then - debug_log "action=$action, old state=$state, new state=unlock" + # The possible values returned from getCurState are documented + # in sxmo_screenlock.sh: + # + # - unlock: normal unlocked state, screen on + # - lock: locked state with screen on + # - off: locked state with screen off + # + # From my testing, "lock" appears to coincide with crust + + if [ "$state" = off -o "$state" = lock ]; then + debug_log "action=$action, state=$state, new state=unlock" sxmo_screenlock.sh unlock else - debug_log "action=$action, old state=$state, new state=off" + debug_log "action=$action, state=$state, new state=off" sxmo_screenlock.sh off fi } -- 2.32.0
Thanks, I have applied this patch with some other housekeeping: To git.sr.ht:~anjan/sxmo-userscripts c197dcc..f495f2b master -> master Take care Anjandev Momi -- w:] www.momi.ca pgp:] https://momi.ca/publickey.txt