设置可变数量的热键侦听器
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 和另一个键时,打印 的 key 参数的输出on_macro(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 按下的哪个键具有哪个值,只需打印 [=] 的 key 参数35=](键) 函数。
希望对您有所帮助
我想创建一个脚本来检测不同数量的不同热键。
例如,假设我想要热键 <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 和另一个键时,打印 的 key 参数的输出on_macro(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 按下的哪个键具有哪个值,只需打印 [=] 的 key 参数35=](键) 函数。 希望对您有所帮助