diff --git a/src/main.py b/src/main.py index c820842..52da529 100644 --- a/src/main.py +++ b/src/main.py @@ -5,7 +5,10 @@ import bucket def main(): r = reader.Reader(reader.StdinReader()) r = reader.Reader(reader.RandomReader()) - w = writer.Writer() + w = writer.Writer(writer.MultiWriter( + #writer.StdoutWriter(), + writer.PyAutoGUIWriter(), + )) bkt = bucket.Bucket() for line in r.read(): latest_bkt = bucket.Bucket() @@ -14,6 +17,8 @@ def main(): w.write(picked) bkt = latest_bkt bkt.push(line) + print("closing writer") + w.close() if __name__ == "__main__": main() diff --git a/src/reader.py b/src/reader.py index 7d44ced..8cb98d8 100644 --- a/src/reader.py +++ b/src/reader.py @@ -47,7 +47,6 @@ class Reader: except KeyboardInterrupt as e: reader.stop() reader.join() - raise e class StdinReader: def read(self): diff --git a/src/writer.py b/src/writer.py index 725f57c..6eee525 100644 --- a/src/writer.py +++ b/src/writer.py @@ -1,17 +1,66 @@ import time import json +import pyautogui class Writer: - def __init__(self): - self.previous = Line(None) + def __init__(self, writer): + self.writer = writer + self.previous = Line([]) def write(self, v): latest = Line(v) chosen = Line.choose(self.previous, latest) if chosen.v != self.previous.v: - print(chosen) + self.writer.write(chosen) self.previous = chosen + def close(self): + self.writer.write(Line([])) + +class MultiWriter: + def __init__(self, *writers): + self.writers = writers + + def write(self, v): + for w in self.writers: + w.write(v) + +class StdoutWriter: + def write(self, v): + print(v) + +class PyAutoGUIWriter: + def __init__(self): + self.keys_down = set() + + def write(self, v): + to_push = set() + for key in v.v: + got = self.translate(key) + if got: + to_push.add(got) + for key in [k for k in self.keys_down]: + if not key in to_push: + self.release(key) + for key in to_push: + self.push(key) + print("PUSHING", self.keys_down) + + # https://pyautogui.readthedocs.io/en/latest/keyboard.html#keyboard-keys + def translate(self, v): + if v == "a": + return "f24" + elif v == "b": + return "f23" + + def push(self, k): + self.keys_down.add(k) + #pyautogui.keyDown(k) + + def release(self, k): + self.keys_down.remove(k) + #pyautogui.keyUp(k) + class Line: def __init__(self, v): self.t = time.time()