From 6203155e0ddc2376092567b90901649386ad7a21 Mon Sep 17 00:00:00 2001 From: Scott Santucci Date: Sat, 15 Jul 2023 01:18:14 -0400 Subject: [PATCH 1/3] pkg: pine64: acpi-kbd-autolock-pinetab2: create script 0.1 --- .../acpi-kbd-autolock-pinetab2/PKGBUILD | 24 +++++++++++++++++++ .../pine64/acpi-kbd-autolock-pinetab2/lid | 2 ++ .../toggle-keyboard.sh | 20 ++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/PKGBUILD create mode 100644 PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/lid create mode 100644 PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/toggle-keyboard.sh diff --git a/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/PKGBUILD b/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/PKGBUILD new file mode 100644 index 000000000..2fab2a84f --- /dev/null +++ b/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/PKGBUILD @@ -0,0 +1,24 @@ +# Maintainer: ScottFreeCode +pkgname=acpi-kbd-autolock-pinetab2 +pkgver=0.1.0 +pkgrel=1 +pkgdesc="Automatically turn off the hardware/case keyboard when it is flipped shut (or behind the tablet), for the PineTab 2" +arch=(any) +url="https://github.com/dreemurrs-embedded/Pine64-Arch" +license=('BSD') +depends=('acpid') +source=(lid toggle-keyboard.sh) + +package() { + install -D -m644 "$srcdir"/lid \ + "$pkgdir"/etc/acpi/events/lid + install -D -m755 "$srcdir"/toggle-keyboard.sh \ + "$pkgdir"/etc/acpi/toggle-keyboard.sh +} + +post_install() { + systemctl enable --now acpid +} + +md5sums=('fdac6076a6c9cf9e3fad89302fc06cf9' + 'c8862783b76c9addf604ba095c9814b4') diff --git a/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/lid b/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/lid new file mode 100644 index 000000000..f022206b7 --- /dev/null +++ b/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/lid @@ -0,0 +1,2 @@ +event=button/lid +action=/etc/acpi/toggle-keyboard.sh %e diff --git a/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/toggle-keyboard.sh b/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/toggle-keyboard.sh new file mode 100644 index 000000000..e59f679f1 --- /dev/null +++ b/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/toggle-keyboard.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +ACTION=bind +MESSAGE=on +if [[ "$3" = "close" ]] +then + ACTION=unbind + MESSAGE=off +fi + +KEYBOARD=4-1 +#KEYBOARD=`grep -r --include=uevent Touchpad /sys/devices/ | cut -d/ -f7 | grep -v : | sort | uniq` + +echo "$KEYBOARD" > /sys/bus/usb/drivers/usb/"$ACTION" + +for user in `who | cut -f1 -d\ | sort | uniq` +do + sudo -u "$user" DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/"`id -u $user`"/bus \ + notify-send -a 'PineTab2 case' "Keyboard turned $MESSAGE." +done From 7a8f77395b18ea502573a3aeb41071aaf420932b Mon Sep 17 00:00:00 2001 From: Scott Santucci Date: Sun, 16 Jul 2023 20:07:31 -0400 Subject: [PATCH 2/3] pkg: pine64: acpi-kbd-autolock-pinetab2: Fix post-install --- PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/PKGBUILD | 4 +--- .../acpi-kbd-autolock-pinetab2.install | 3 +++ 2 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/acpi-kbd-autolock-pinetab2.install diff --git a/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/PKGBUILD b/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/PKGBUILD index 2fab2a84f..3c6003c00 100644 --- a/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/PKGBUILD +++ b/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/PKGBUILD @@ -16,9 +16,7 @@ package() { "$pkgdir"/etc/acpi/toggle-keyboard.sh } -post_install() { - systemctl enable --now acpid -} +install=acpi-kbd-autolock-pinetab2.install md5sums=('fdac6076a6c9cf9e3fad89302fc06cf9' 'c8862783b76c9addf604ba095c9814b4') diff --git a/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/acpi-kbd-autolock-pinetab2.install b/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/acpi-kbd-autolock-pinetab2.install new file mode 100644 index 000000000..51a7761b0 --- /dev/null +++ b/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/acpi-kbd-autolock-pinetab2.install @@ -0,0 +1,3 @@ +post_install() { + systemctl enable --now acpid +} From bcfe44862eb527cc3d2538a3d76366ddc1bf8330 Mon Sep 17 00:00:00 2001 From: Scott Santucci Date: Wed, 1 Jan 2025 15:33:11 -0500 Subject: [PATCH 3/3] pkg: pine64: acpi-kbd-autolock-pinetab2: Find keyboard automatically --- .../acpi-kbd-autolock-pinetab2/PKGBUILD | 2 +- .../toggle-keyboard.sh | 44 +++++++++++++++++-- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/PKGBUILD b/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/PKGBUILD index 3c6003c00..1694c6227 100644 --- a/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/PKGBUILD +++ b/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/PKGBUILD @@ -19,4 +19,4 @@ package() { install=acpi-kbd-autolock-pinetab2.install md5sums=('fdac6076a6c9cf9e3fad89302fc06cf9' - 'c8862783b76c9addf604ba095c9814b4') + 'be9a6fb2532a09e22226b2c148841909') diff --git a/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/toggle-keyboard.sh b/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/toggle-keyboard.sh index e59f679f1..ae10c93eb 100644 --- a/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/toggle-keyboard.sh +++ b/PKGBUILDS/pine64/acpi-kbd-autolock-pinetab2/toggle-keyboard.sh @@ -1,5 +1,16 @@ #!/bin/sh +# NOTE: if the "on"/reactivate version of this command for some reason cannot +# find the saved keyboard USB ID or if the saved ID somehow fails to turn the +# keyboard back on (as indicated by a search for it again in the devices), this +# script will fall back to turning on ALL usb ports. +# +# If for some reason you NEED a usb port to stay off even in the event of an +# error from this script, you will want to uninstall this package! +# +# Most users it won't hurt to turn on all USB ports though; if you're not sure +# whether it's safe to use this, it should be safe. + ACTION=bind MESSAGE=on if [[ "$3" = "close" ]] @@ -8,10 +19,37 @@ then MESSAGE=off fi -KEYBOARD=4-1 -#KEYBOARD=`grep -r --include=uevent Touchpad /sys/devices/ | cut -d/ -f7 | grep -v : | sort | uniq` +KEYBOARD=`grep -r --include=uevent Touchpad /sys/devices/ | cut -d/ -f7 | grep -v : | sort | uniq` + +if [ -z "$KEYBOARD" -a -e /var/keyboard-usb-port ] +then + KEYBOARD=`cat /var/keyboard-usb-port` +fi + +if [ -z "$KEYBOARD" ] && [[ "$ACTION" = "unbind" ]] +then + for user in `who | cut -f1 -d\ | sort | uniq` + do + sudo -u "$user" DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/"`id -u $user`"/bus \ + notify-send -a 'PineTab2 case' "UNABLE TO FIND KEYBOARD USB PORT." + done + set -e + false +fi + +if ! [ -z "$KEYBOARD" ] +then + echo -n "$KEYBOARD" > /var/keyboard-usb-port + echo "$KEYBOARD" > /sys/bus/usb/drivers/usb/"$ACTION" +fi -echo "$KEYBOARD" > /sys/bus/usb/drivers/usb/"$ACTION" +if [[ "$ACTION" = "bind" ]] && ! grep -r --include=uevent Touchpad /sys/devices/ 2>&1 >/dev/null +then + for device in `ls /sys/bus/usb/devices` + do + echo "$device" > /sys/bus/usb/drivers/usb/bind 2>/dev/null + done +fi for user in `who | cut -f1 -d\ | sort | uniq` do