ready for an emulator
parent
1ebd6facae
commit
9746665626
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -47,7 +47,6 @@ class Reader:
|
|||
except KeyboardInterrupt as e:
|
||||
reader.stop()
|
||||
reader.join()
|
||||
raise e
|
||||
|
||||
class StdinReader:
|
||||
def read(self):
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Reference in New Issue