Last active
September 6, 2022 13:32
-
-
Save auroracramer/fc35c237cdec7fdac3527f790e93b875 to your computer and use it in GitHub Desktop.
Script for temporarily disabling keyboard from command line on Ubuntu 22.04
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
if [[ -n "$1" ]]; then | |
TKB_TIMEOUT=$1 | |
else | |
TKB_TIMEOUT=600 # 10 minutes | |
fi | |
# Prevent sudo from timing out | |
# https://serverfault.com/a/266463 | |
SUDO_STATUS=/tmp/disable-keyboard-sudo-status.txt | |
echo $$ >> $SUDO_STATUS | |
trap 'rm -f $SUDO_STATUS >/dev/null 2>&1' 0 | |
sudo_refresh() { | |
while [[ -f $SUDO_STATUS ]]; do | |
sudo -v | |
sleep 5 | |
done & | |
} | |
sudo -v | |
sudo_refresh | |
# Get device events for keyboard and extra keys | |
# https://stackoverflow.com/a/7451456 | |
KEYBOARD_EVENT=$(sudo libinput list-devices | awk '/Device: ThinkPad Extra Buttons/{getline; print}' | sed -e 's|Kernel: *||g') | |
EXTRAKEY_EVENT=$(sudo libinput list-devices | awk '/Device: AT Translated Set 2 keyboard/{getline; print}' | sed -e 's|Kernel: *||g') | |
# Launch event "grabbers" and capture PIDs | |
sudo evtest --grab $KEYBOARD_EVENT 2>&1>/dev/null & | |
keyboard_pid=$! | |
sudo evtest --grab $EXTRAKEY_EVENT 2>&1>/dev/null & | |
extrakey_pid=$! | |
# Set up exit trap to kill "grabbers" and remove sudo status file | |
# https://stackoverflow.com/a/2173421 | |
trap "trap - SIGINT SIGTERM EXIT && sudo kill --signal=SIGKILL $keyboard_pid $extrakey_pid && rm -f $SUDO_STATUS >/dev/null 2>&1 | |
" SIGINT SIGTERM EXIT | |
# Pop up window allowing user to re-enable keyboard early | |
zenity --warning --width=200 --height=50 --timeout=$TKB_TIMEOUT --text="Click OK to reenable keyboard" | |
# Sometimes text gets all garbled | |
reset |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment