keyboard
keyboard copied to clipboard
Can I save the recorded actions?
As shown in the title, can I save the recorded actions and load them next time?
Thank you for your reply.
I had a similar use case and this is what I came up with:
def record():
print("recording")
events = keyboard.record()
f = open("input.txt", "w")
start_time = events[0].time
for evt in events:
evt.time -= start_time
f.write(evt.to_json() + '\n')
f.close()
print("output to input.txt")
which gives you a file that looks like this:
{"event_type": "down", "scan_code": 28, "name": "enter", "time": 0.0, "is_keypad": false}
{"event_type": "up", "scan_code": 28, "name": "enter", "time": 0.1115717887878418, "is_keypad": false}
{"event_type": "down", "scan_code": 72, "name": "w", "time": 0.30413126945495605, "is_keypad": false}
{"event_type": "up", "scan_code": 75, "name": "w", "time": 3.936047077178955, "is_keypad": false}
{"event_type": "down", "scan_code": 75, "name": "d", "time": 4.239914655685425, "is_keypad": false}
{"event_type": "up", "scan_code": 75, "name": "d", "time": 4.335659027099609, "is_keypad": false}
{"event_type": "down", "scan_code": 1, "name": "esc", "time": 5.279609441757202, "is_keypad": false}
{"event_type": "up", "scan_code": 72, "name": "up", "time": 5.376127004623413, "is_keypad": false}
{"event_type": "down", "scan_code": 1, "name": "esc", "time": 5.889007568359375, "is_keypad": false}
then to play it again:
def play():
f = open("input.txt", "r")
events = []
for line in f:
evt_data = json.loads(line)
events.append(keyboard.KeyboardEvent(evt_data.get('event_type'), evt_data.get('scan_code'), evt_data.get('name'), evt_data.get('time'), evt_data.get('device'), evt_data.get('modifiers'), evt_data.get('is_keypad')))
f.close()
print("playing")
keyboard.play(events)
print("finished")