ready for an emulator

master
Bel LaPointe 2022-09-18 13:00:38 -06:00
parent 1ebd6facae
commit 9746665626
3 changed files with 58 additions and 5 deletions

View File

@ -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()

View File

@ -47,7 +47,6 @@ class Reader:
except KeyboardInterrupt as e:
reader.stop()
reader.join()
raise e
class StdinReader:
def read(self):

View File

@ -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()