繁体   English   中英

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

[英]set variable amount of hotkey listeners 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 ),然后在其中确定按下了哪个热键并相应地采取行动。

我注意到每当我按下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参数。 希望这对你有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM