almost, but cant press multi keys atm
parent
582ee7a0d2
commit
f2bce26ecb
|
|
@ -19,10 +19,10 @@ def main():
|
|||
ap.add_argument("--simulated-annealing-nothing-penalty", default=100, type=int)
|
||||
ap.add_argument("--simulated-annealing-decay-rate", default=5, type=int)
|
||||
ap.add_argument("--translation", default=json.dumps({
|
||||
"up": {"key": "w", "weight": 20},
|
||||
"down": {"key": "s", "weight": 1},
|
||||
"left": {"key": "a", "weight": 1},
|
||||
"right": {"key": "d", "weight": 20},
|
||||
"up": {"key": "w", "weight": 20, "hold": False},
|
||||
"down": {"key": "s", "weight": 1, "hold": True},
|
||||
"left": {"key": "a", "weight": 1, "hold": True},
|
||||
"right": {"key": "d", "weight": 20, "hold": True},
|
||||
}))
|
||||
args = ap.parse_args()
|
||||
|
||||
|
|
|
|||
|
|
@ -14,8 +14,7 @@ class Writer:
|
|||
def write(self, v):
|
||||
latest = Line(v)
|
||||
chosen = self.chooser.choose(self.previous, latest)
|
||||
if chosen.v != self.previous.v:
|
||||
self.writer.write(chosen)
|
||||
self.writer.write(chosen)
|
||||
self.previous = chosen
|
||||
|
||||
def close(self):
|
||||
|
|
@ -31,14 +30,19 @@ class MultiWriter:
|
|||
w.write(v)
|
||||
|
||||
class StdoutWriter:
|
||||
def __init__(self):
|
||||
self.last = ""
|
||||
def write(self, v):
|
||||
if str(v) == self.last:
|
||||
return
|
||||
self.last = str(v)
|
||||
print(v)
|
||||
|
||||
class PyAutoGUIWriter:
|
||||
def __init__(self, optional_translation):
|
||||
def __init__(self, translation):
|
||||
pyautogui.FAILSAFE = False
|
||||
self.keys_down = set()
|
||||
self.translation = optional_translation
|
||||
self.translation = translation
|
||||
log.info(json.dumps(self.translation, indent=" "))
|
||||
|
||||
def write(self, v):
|
||||
|
|
@ -48,24 +52,31 @@ class PyAutoGUIWriter:
|
|||
if got:
|
||||
to_push.add(got)
|
||||
for key in [k for k in self.keys_down]:
|
||||
if not key in to_push:
|
||||
if not key in [i[0] for i in to_push]:
|
||||
self.release(key)
|
||||
for key in to_push:
|
||||
self.push(key)
|
||||
self.push(key[0], key[1])
|
||||
log.info("PUSHING", self.keys_down)
|
||||
|
||||
# https://pyautogui.readthedocs.io/en/latest/keyboard.html#keyboard-keys
|
||||
def translate(self, v):
|
||||
result = self.translation.get(v, {}).get("key")
|
||||
if result:
|
||||
return result
|
||||
result = self.translation.get(v, {})
|
||||
key = result.get("key")
|
||||
hold = result.get("hold")
|
||||
if key:
|
||||
return (key, hold)
|
||||
|
||||
def push(self, k):
|
||||
def push(self, k, hold):
|
||||
self.keys_down.add(k)
|
||||
pyautogui.keyDown(k)
|
||||
if not hold:
|
||||
self._release(k)
|
||||
|
||||
def release(self, k):
|
||||
self.keys_down.remove(k)
|
||||
self._release(k)
|
||||
|
||||
def _release(self, k):
|
||||
pyautogui.keyUp(k)
|
||||
|
||||
class Line:
|
||||
|
|
|
|||
Loading…
Reference in New Issue