设置可变数量的热键侦听器进程

时间:2019-12-30 18:17:58

标签: python pynput

我想创建一个脚本来检测可变数量的不同热键。
例如,假设我希望热键<ctrl>+1<ctrl>+2<ctrl>+3上有三个侦听器。我尝试过:

from pynput import keyboard


def on_macro(key):
   print('You pressed <ctrl> '+key)

if __name__ == "__main__":
   for c in range(3):
      hotkey = keyboard.HotKey(
        keyboard.HotKey.parse('<ctrl>+'+str(c)),
        lambda: on_macro(c)
      )
      listener = keyboard.Listener(on_press=hotkey.press, on_release=hotkey.release)
      listener.start()

我的目标是为每个热键都具有相同的回调(on_macro),然后在其中确定已按下哪个热键并采取相应措施。

1 个答案:

答案 0 :(得分:1)

我注意到,每当我按下 ctrl 和另一个键时,打印 on_macro(key) key 参数的输出都在十六进制,但问题是Pynput不使用标准十六进制值。在这种情况下,“ ctrl + a ”被翻译为“ \ x01 ”,“ ctrl + b ”被翻译为“ \ x02” ”等等。 这是你可以做的

import pynput

def on_macro(key):
    key = str(key)
    key = key.replace("'", '')
    # print(key) use this to discover which key has which value

    if key == '\\x01': # key == ctrl + a
        do_your_stuff()
    elif key == '\\x02': # key == ctrl + b
        do_other_stuff()

with pynput.keyboard.Listener(on_press=on_macro) as l:
    l.join()

要发现按下 ctrl 的哪个键具有哪个值,只需打印 on_macro(key)函数的 key 参数即可。 希望这对您有帮助