83 lines
1.3 KiB
Bash
83 lines
1.3 KiB
Bash
#! /bin/bash
|
|
|
|
main() {
|
|
cleanup() {
|
|
killall -9 $(jobs -p)
|
|
killall snowboy
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
if [ ! -e /tmp/stt.fifo ]; then
|
|
mkfifo /tmp/stt.fifo
|
|
fi
|
|
|
|
echo starting in
|
|
for ((i=2; i>0; i--)); do
|
|
echo "...$i..."
|
|
sleep 1
|
|
done
|
|
|
|
local models=($(
|
|
cat pyautogui.yaml \
|
|
| gojq -r -c --yaml-input '
|
|
to_entries[] | "model/"+.key+".pmdl/"+.key
|
|
' \
|
|
| tr '\n' ',' \
|
|
| sed 's/,$//'
|
|
))
|
|
echo models=$models
|
|
|
|
./snowboy -r resources.res -ms $models "$@" > /tmp/stt.fifo &
|
|
|
|
python3 -c '
|
|
import pyautogui
|
|
import time
|
|
|
|
keys = set()
|
|
|
|
def toggle(key):
|
|
global keys
|
|
if key in keys:
|
|
release(key)
|
|
else:
|
|
hold(key)
|
|
|
|
def hold(key):
|
|
global keys
|
|
for keyin in [todrop for todrop in keys]:
|
|
if keyin != key:
|
|
release(keyin)
|
|
keys = set()
|
|
keys.add(key)
|
|
print()
|
|
print("pressing", key)
|
|
print()
|
|
pyautogui.keyDown(key)
|
|
|
|
def release(key):
|
|
print()
|
|
print("releasing", key)
|
|
print()
|
|
pyautogui.keyUp(key)
|
|
|
|
def main():
|
|
with open("/tmp/stt.fifo", "r") as q:
|
|
for line in q:
|
|
handle(line.strip())
|
|
|
|
import yaml
|
|
mapping = yaml.safe_load(open("./pyautogui.yaml", "r"))
|
|
print(mapping)
|
|
|
|
def handle(cmd):
|
|
global mapping
|
|
hold(mapping.get(cmd))
|
|
|
|
main()
|
|
'
|
|
}
|
|
|
|
if [ "$0" == "$BASH_SOURCE" ]; then
|
|
main "$@"
|
|
fi
|