Как обнаружить нажатие / отпускание клавиш в pynput - PullRequest
1 голос
/ 01 февраля 2020

Я использую pynput для обнаружения keypress выпуска, но я хочу выполнить другой код при выпуске указанного c ключа.

Вот мой код:

1   from pynput import keyboard
2
3   def on_press(key):
4        try:
5           print('Key {0} pressed'.format(key.char))
6           #Add your code to drive motor
7       except AttributeError:
8           print('Key {0} pressed'.format(key))
9           #Add Code
10  def on_release(key):
11      print('{0} released'.format(key))
12      #Add your code to stop motor
13      if key == keyboard.Key.esc:
14          # Stop listener
15          # Stop the Robot Code
16          return False
17      if key == keyboard.Key.Qkey:
18          print ("fviokbhvxfb")
19
20  # Collect events until released
21  with keyboard.Listener(
22          on_press=on_press,
23          on_release=on_release) as listener:
24      listener.join()

они указывают, что это не работает:

if key == keyboard.Key.Qkey:
    print ("fviokbhvxfb")`

, вероятно, моя проблема заключается в Qkey.

, который я написал в строке 17, на что я должен заменить его? Я пытаюсь определить, если q выпущено и нажата, и выполнить какой-то код, только если он нажат, а не что-то еще.

1 Ответ

1 голос
/ 01 февраля 2020

Вы можете сделать это:

def on_release(key):
    print('{0} released'.format(key))
    #Add your code to stop motor
    if key == keyboard.Key.esc:
        # Stop listener
        # Stop the Robot Code
        return False
    if 'char' in dir(key):     #check if char method exists,
        if key.char == 'q':    #check if it is 'q' key
            print("fviokbhvxfb")
...