使用键盘模块检测 *some key* 和 **+* 的按下
Detect a press of *some key* and *+* with keyboard module
所以我这样做:if keyboard.is_pressed("shift + +"):
它给了我一个错误。
我需要它在同一个 'command' 中。
请不要 post 这作为答案:
if keyboard.is_pressed("shift") and keyboard.is_pressed("+"):
提前致谢!
它不起作用的原因是 keyboard
解析此“热键”字符串的方式。这是来自源代码:
for step in _re.split(r',\s?', hotkey):
keys = _re.split(r'\s?\+\s?', step)
它只是在“+”上拆分,所以你最终得到 ["shift", "", ""]
,它有两个空字符串,因此是一个错误。
你可以这样做:
if keyboard.is_pressed([sc1, sc2]):
其中sc1
和sc2
是您想要的按键的“扫码”。
例如,它可能看起来像这样:
if keyboard.is_pressed([56, 89]):
要查找扫描代码,请使用如下脚本:
import keyboard
while True:
print(keyboard.read_event().scan_code)
只需 运行 该脚本并按您感兴趣的键即可查看其扫描代码是否已打印。在本答案的第一个代码块中将这些用于 sc1
和 sc2
。
从阅读源代码来看,这应该也可以:
if keyboard.is_pressed(["shift", "+"]):
但这对我不起作用。也许它对你有用。
警告:此 keyboard
模块有时会对不同的键盘和不同的操作系统有不同的 scan_codes。
所以我这样做:if keyboard.is_pressed("shift + +"):
它给了我一个错误。
我需要它在同一个 'command' 中。 请不要 post 这作为答案:
if keyboard.is_pressed("shift") and keyboard.is_pressed("+"):
提前致谢!
它不起作用的原因是 keyboard
解析此“热键”字符串的方式。这是来自源代码:
for step in _re.split(r',\s?', hotkey):
keys = _re.split(r'\s?\+\s?', step)
它只是在“+”上拆分,所以你最终得到 ["shift", "", ""]
,它有两个空字符串,因此是一个错误。
你可以这样做:
if keyboard.is_pressed([sc1, sc2]):
其中sc1
和sc2
是您想要的按键的“扫码”。
例如,它可能看起来像这样:
if keyboard.is_pressed([56, 89]):
要查找扫描代码,请使用如下脚本:
import keyboard
while True:
print(keyboard.read_event().scan_code)
只需 运行 该脚本并按您感兴趣的键即可查看其扫描代码是否已打印。在本答案的第一个代码块中将这些用于 sc1
和 sc2
。
从阅读源代码来看,这应该也可以:
if keyboard.is_pressed(["shift", "+"]):
但这对我不起作用。也许它对你有用。
警告:此 keyboard
模块有时会对不同的键盘和不同的操作系统有不同的 scan_codes。