使用键盘模块检测 *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]):

其中sc1sc2是您想要的按键的“扫码”。 例如,它可能看起来像这样:

if keyboard.is_pressed([56, 89]):

要查找扫描代码,请使用如下脚本:

import keyboard

while True:
    print(keyboard.read_event().scan_code)

只需 运行 该脚本并按您感兴趣的键即可查看其扫描代码是否已打印。在本答案的第一个代码块中将这些用于 sc1sc2

从阅读源代码来看,这应该也可以:

if keyboard.is_pressed(["shift", "+"]):

但这对我不起作用。也许它对你有用。

警告:此 keyboard 模块有时会对不同的键盘和不同的操作系统有不同的 scan_codes。