Search code examples
pythonkeyboard

Keyboard Listener from pynput


I am trying to import a keyboard listener into my class but keep getting a

NameError: name 'on_press' is not defined

Here is my code:

from pynput import keyboard
class game_code:

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

    def check_key_press(self,key):
       try: k = key.char
       except: k = key.name

       if k in ['up', 'down', 'left', 'right']:
          self.key = keys.append(k)
          return True

        else:
          return False

Also not 100% sure on how with statements work.


Solution

  • I got it working using the format of their documentation online:

    https://pythonhosted.org/pynput/keyboard.html

    from pynput.keyboard import Key, Listener
    
    def on_press(key):
        #print('{0} pressed'.format(
            #key))
        check_key(key)
    
    def on_release(key):
        #print('{0} release'.format(
           # key))
        if key == Key.esc:
            # Stop listener
            return False
    
    def check_key(key):
        if key in [Key.up, Key.down, Key.left, Key.right]: 
            print('YES')
    
    # Collect events until released
    with Listener(
            on_press=on_press,
            on_release=on_release) as listener:
        listener.join()