我想创建一个检测可变数量的不同热键的脚本。
例如,说我要上热键3个听众<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参数即可。希望这对您有所帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句