ready for an emulator
parent
1ebd6facae
commit
9746665626
|
|
@ -5,7 +5,10 @@ import bucket
|
||||||
def main():
|
def main():
|
||||||
r = reader.Reader(reader.StdinReader())
|
r = reader.Reader(reader.StdinReader())
|
||||||
r = reader.Reader(reader.RandomReader())
|
r = reader.Reader(reader.RandomReader())
|
||||||
w = writer.Writer()
|
w = writer.Writer(writer.MultiWriter(
|
||||||
|
#writer.StdoutWriter(),
|
||||||
|
writer.PyAutoGUIWriter(),
|
||||||
|
))
|
||||||
bkt = bucket.Bucket()
|
bkt = bucket.Bucket()
|
||||||
for line in r.read():
|
for line in r.read():
|
||||||
latest_bkt = bucket.Bucket()
|
latest_bkt = bucket.Bucket()
|
||||||
|
|
@ -14,6 +17,8 @@ def main():
|
||||||
w.write(picked)
|
w.write(picked)
|
||||||
bkt = latest_bkt
|
bkt = latest_bkt
|
||||||
bkt.push(line)
|
bkt.push(line)
|
||||||
|
print("closing writer")
|
||||||
|
w.close()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,6 @@ class Reader:
|
||||||
except KeyboardInterrupt as e:
|
except KeyboardInterrupt as e:
|
||||||
reader.stop()
|
reader.stop()
|
||||||
reader.join()
|
reader.join()
|
||||||
raise e
|
|
||||||
|
|
||||||
class StdinReader:
|
class StdinReader:
|
||||||
def read(self):
|
def read(self):
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,66 @@
|
||||||
import time
|
import time
|
||||||
import json
|
import json
|
||||||
|
import pyautogui
|
||||||
|
|
||||||
class Writer:
|
class Writer:
|
||||||
def __init__(self):
|
def __init__(self, writer):
|
||||||
self.previous = Line(None)
|
self.writer = writer
|
||||||
|
self.previous = Line([])
|
||||||
|
|
||||||
def write(self, v):
|
def write(self, v):
|
||||||
latest = Line(v)
|
latest = Line(v)
|
||||||
chosen = Line.choose(self.previous, latest)
|
chosen = Line.choose(self.previous, latest)
|
||||||
if chosen.v != self.previous.v:
|
if chosen.v != self.previous.v:
|
||||||
print(chosen)
|
self.writer.write(chosen)
|
||||||
self.previous = 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:
|
class Line:
|
||||||
def __init__(self, v):
|
def __init__(self, v):
|
||||||
self.t = time.time()
|
self.t = time.time()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue