#! /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