3

This has been keeping me up quite a bit. When using the Python pynput module with keyboard.Listener, whatever is typed whilst the keyboard is listening is printed out in Terminal after the keyboard Listener has stopped.

I've tried termios.tcflush(sys.stdout, termios.TCIOFLUSH) but it doesn't seem to clear the buffer and stop characters being printed into the Terminal window.

Any help massively appreciated! Script below -


import sys
from pynput import keyboard
import termios
global go_to_selection

def on_press(key):
    global go_to_selection

    if key != keyboard.Key.tab and key != keyboard.Key.shift and key != keyboard.Key.enter:

        termios.tcflush(sys.stdout, termios.TCIOFLUSH)
        go_to_selection = True
        return False


with keyboard.Listener(on_press=on_press) as listener:
    listener.join()

if go_to_selection == True:
    _user_choice = input('\r\nSelection: ')
    print('  Chosen: '+ str(_user_choice))

Edit:

with keyboard.Listener(on_press=on_press, suppress=True ) as listener:
        listener.join()

fixes this actually, but appears to cause a 1-2 second delay before the keyboard becomes responsive again. Is this expected?

Thanks!

0 Answers0