keyboard icon indicating copy to clipboard operation
keyboard copied to clipboard

Can I save the recorded actions?

Open Hsien0930 opened this issue 3 years ago • 1 comments

As shown in the title, can I save the recorded actions and load them next time?

Thank you for your reply.

Hsien0930 avatar Jul 26 '21 08:07 Hsien0930

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")

Vac1911 avatar Jan 08 '22 16:01 Vac1911