From 0f97e3d7edba9b6e619703eb1bcf40e4a725cccf Mon Sep 17 00:00:00 2001 From: Colin Date: Sun, 9 Jun 2024 18:26:15 +0000 Subject: [PATCH] sane-input-handler: fix that input events werent suppressed during screen-off note that this doesn't fix input gating during the screenoff-after-inactivity case. --- .../sane-input-handler/sane-input-handler | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/hosts/common/programs/sane-input-handler/sane-input-handler b/hosts/common/programs/sane-input-handler/sane-input-handler index a99d649f..8f6b342a 100755 --- a/hosts/common/programs/sane-input-handler/sane-input-handler +++ b/hosts/common/programs/sane-input-handler/sane-input-handler @@ -85,21 +85,38 @@ log() { ## HELPERS -isTouchOn() { - # success if all touch inputs have their events enabled +# swaySetOutput true|false +# turns the display on or off +swaySetOutput() { + swaymsg -- output '*' power "$1" +} +# swaySetTouch enabled|disabled +# turns touch input on or off +swaySetTouch() { + # XXX(2024/06/09): `type:touch` method is documented, but now silently fails + # swaymsg -- input type:touch events "$1" + + local inputs=$(swaymsg -t get_inputs --raw | jq '. | map(select(.type == "touch")) | map(.identifier) | join(" ")' --raw-output) + for id in "${inputs[@]}"; do + swaymsg -- input "$id" events "$1" + done +} + +# success if all touch inputs have their events enabled +swayGetTouch() { swaymsg -t get_inputs --raw \ | jq --exit-status '. | map(select(.type == "touch")) | all(.libinput.send_events == "enabled")' \ > /dev/null } -isScreenOn() { - # success if all outputs have power +# success if all outputs have power +swayGetOutput() { swaymsg -t get_outputs --raw \ | jq --exit-status '. | all(.power)' \ > /dev/null } isAllOn() { - isTouchOn && isScreenOn + swayGetOutput && swayGetTouch } isInhibited() { @@ -134,12 +151,12 @@ unmapped() { } allOn() { - swaymsg -- output '*' power true - swaymsg -- input type:touch events enabled + swaySetOutput true + swaySetTouch enabled } allOff() { - swaymsg -- output '*' power false - swaymsg -- input type:touch events disabled + swaySetOutput false + swaySetTouch disabled } toggleKeyboard() {