gpt4 book ai didi

python - 为什么 pynput 不检测数字键盘按下?

转载 作者:行者123 更新时间:2023-12-01 01:13:23 30 4
gpt4 key购买 nike

我在 Windows 7 上使用 python 3.7。

有没有办法检测pynput模块中的数字(例如:“1”)按键?

我尝试了许多其他模块,但除了 tkinter 之外我什么也没得到它需要一个窗口,但我不想要那个。

from pynput import keyboard  
def on_press(key):
print(key)
if str(format(key)) == 'Key.1':
print('Exiting...')
return False
with keyboard.Listener(on_press = on_press) as listener:
listener.join()

它实际上只打印按下的键并且从不刹车(不接受数字输入)。

最佳答案

您的代码正在测试值“1”。恕我直言,如果您按 1 键,pynput 将返回什么,请原谅。您想要响应 NumLock 键。

而不是

if str(format(key)) == '1':

您可以编写以下任一测试代码,这两个测试都会检查您要查找的值:

if key == keyboard.Key.num_lock:

if str(format(key)) == "Key.num_lock":

但是...有两种NumLock键。

其中一个是键盘 NumLock 和 Clear,它具有 USB 代码 (0x53) 和 Windows 虚拟键代码 (0x90)。 pynput 将响应按下此键。

另一种是键盘锁定 NumLock,它在键盘级别工作:它改变键盘的行为方式,而 Windows 听不到它。它有一个 USB 代码 (0x83),但没有 Windows 虚拟键代码。如果该键没有虚拟键代码,则按下该键时不会出现 Windows 消息,并且 pynput 会报告 Windows 消息。

因此,该行为取决于硬件,并且您的机器可能具有第二种 NumLock 键。如果确实如此,那么您对 ​​pynput 说什么都无济于事。不过,除非您使用的是非常有限的笔记本电脑键盘,否则这种情况不太可能发生。

关于python - 为什么 pynput 不检测数字键盘按下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54610099/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com