В MacOS Mojave и python 2.7.15 этот код:
from pynput import keyboard
def on_press(key):
print('Key {} pressed.'.format(key))
def on_release(key):
print('Key {} released.'.format(key))
if str(key) == 'Key.esc':
print('Exiting...')
return False
with keyboard.Listener(
on_press = on_press,
on_release = on_release) as listener:
listener.join()
производит этот вывод, когда клавиши 'hjs escape' нажимаются в последовательности
hKey 'h' pressed.
Key 'h' released.
Key 'j' pressed.
jKey 'j' released.
Key 's' pressed.
sKey 's' released.
Key Key.esc pressed.
^[Key Key.esc released.
Exiting...
%hjs
Я делаюне понимаю, почему
1) буква 'h' предшествует выводу функции on_press
2) буквы 'j', 's', '^ [Key' предшествуют выводуфункция on_release
3) буквы 'hjs' появляются после запроса терминала после завершения выполнения программы
У меня такое ощущение, что ввод с клавиатуры перехватывается с помощью pynput, но затем выводится pynput и эхоэто снова к терминалу во время выполнения программы.Это может быть подавлено?Но тогда буквы ОПЯТЬ появляются после завершения программы.Откуда они берутся и как мне подавить такое поведение?
Я пытаюсь добавить неблокирующий ввод с клавиатуры для выхода из программы, в которой постоянно выполняется цикл