Как правильно выйти из цикла?

В коде ниже выход происходит только в начале петли (при условии pressed "esc"). Подскажите, пожалуйста, каким образом можно прервать петлю в процессе проигрывания событий и не дожидаться завершения полного цикла, т.е. до time.sleep(5)?

import mouse
import keyboard
import time

#This is the list where all the events will be stored
events = []
#Waiting for 'ctrl' to be pressed
keyboard.wait("ctrl")
print('record')
#starting the recording
mouse.hook(events.append)
#Waiting for 'ctrl' to be pressed
keyboard.wait("ctrl")
print('playback...')
#Stopping the recording
mouse.unhook(events.append)

while True:
    #sec sleep
    time.sleep(5)
    mouse.play(events)
    #press to fin the script
    if keyboard.is_pressed("esc"):
        print('bye')
        break

Для следующих вариантов результат тот же:

    while True:
    if keyboard.is_pressed("esc"):
        mouse.play(events)
    print('bye')
    break

и

while True:
if keyboard.is_pressed("esc"):
    print('bye')
    break
mouse.play(events)

Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Исходный код mouse.play - простой цикл.

Скопируйте метод к себе, вставьте в цикл проверку не нажал ли пользователь Esc. Да, придётся разрешить зависимости вроде _os_mouse и _time, но это не сложно.

→ Ссылка