@@ -7,7 +7,7 @@ import threading | |||
locker = subprocess.Popen([ "mlock" ]) | |||
print("locker "+str(locker.pid)+" spawned") | |||
matcher = subprocess.Popen([ "./facewaiter.sh" ]) | |||
matcher = subprocess.Popen([ "./facewaiter.py" ]) | |||
print("matcher "+str(matcher.pid)+" spawned") | |||
def waitfor(x, others): |
@@ -136,7 +136,7 @@ sub_match.add_argument( | |||
"-s", "--show", default=False, action="store_true", | |||
help="show what the camera sees") | |||
sub_match.add_argument( | |||
"-w", "--wait", type=str, default=None, | |||
"-w", "--wait", default=False, action="store_true", | |||
help="wait for newline on stdin") | |||
sub_match.add_argument( | |||
"-t", "--delay", type=int, default=0, |
@@ -0,0 +1,32 @@ | |||
#!/usr/bin/env python | |||
import subprocess | |||
keyboard = "AT Translated Set 2 keyboard" | |||
battery = "/sys/class/power_supply/BAT0" | |||
device = "2" | |||
faces = "faces" | |||
key = "36" | |||
bat = False | |||
if battery is not None: | |||
with open(f"{battery}/status", "r") as f: | |||
s = f.read().strip() | |||
if s == "Discharging" or s == "Unknown": | |||
bat = True | |||
proc = subprocess.Popen( | |||
f"./facematcher.py match --wait --delay 500 --device {device} {faces}/$USER/*", | |||
stdin=subprocess.PIPE, shell=True) | |||
if bat: | |||
print(f"On battery, so waiting for {key}") | |||
subprocess.check_output( | |||
f"xinput test '{keyboard}' | grep --line-buffered 'key press {key}' | " + | |||
f"while read -r line; do exit; done", | |||
shell=True) | |||
print(f"Got {key}.") | |||
proc.stdin.write(b"hello\n") | |||
proc.stdin.flush() | |||
exit(proc.wait()) |
@@ -1,39 +0,0 @@ | |||
#!/bin/bash | |||
keyboard="AT Translated Set 2 keyboard" | |||
battery="/sys/class/power_supply/BAT0" | |||
device=2 | |||
faces="faces" | |||
if [ -n "$battery" ]; then | |||
st="$(cat "$battery/status")" | |||
if [ "$st" != "Discharging" ] && [ "$st" != "Unknown" ]; then | |||
./facematcher.py match --delay 500 --device "$device" $faces/$USER/* | |||
exit $? | |||
fi | |||
fi | |||
rm -f .testfifo | |||
mkfifo .testfifo | |||
xinput test "AT Translated Set 2 keyboard" \ | |||
| grep --line-buffered "key press 36" > .testfifo & | |||
xpid=$! | |||
rm -f .matchfifo | |||
mkfifo .matchfifo | |||
matcher() { | |||
cat .matchfifo | ./facematcher.py match --delay 500 --device 2 --wait $faces/$USER/* | |||
} | |||
matcher & | |||
matchpid=$! | |||
trap "kill $matchpid" SIGINT SIGTERM | |||
read <.testfifo | |||
echo > .matchfifo | |||
kill $xpid | |||
wait | |||
rm -f .testfifo | |||
rm -f .matchfifo |