Pynput возвращает слишком много символов в MacOS - PullRequest
1 голос
/ 20 марта 2019

В 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 и эхоэто снова к терминалу во время выполнения программы.Это может быть подавлено?Но тогда буквы ОПЯТЬ появляются после завершения программы.Откуда они берутся и как мне подавить такое поведение?

Я пытаюсь добавить неблокирующий ввод с клавиатуры для выхода из программы, в которой постоянно выполняется цикл

...