使用 pynput 键盘检测小键盘按键

LAZ*_*LAZ 0 python keyboard hotkeys numpad pynput

我正在使用 pynput 键盘模块来检测 python 应用程序中的击键。

目前我无法区分小键盘键和常规数字键,它们都返回为“1”、“2”、“3”等

那么我错过了什么?

代码 :

def on_press(key):
    print key

def on_release(key):
    return

with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()
Run Code Online (Sandbox Code Playgroud)

blh*_*ing 6

您可以使用vkkey对象的属性来获取虚拟键码,对于通过小键盘输入的数字,虚拟键码的范围为 96 到 105:

from pynput import keyboard

def on_press(key):
    if hasattr(key, 'vk') and 96 <= key.vk <= 105:
        print('You entered a number from the numpad: ', key.char)

with keyboard.Listener(on_press = on_press) as listener:
     listener.join()
Run Code Online (Sandbox Code Playgroud)

  • 我应该早点看这里,但我毕竟通过查看键码 __dict__ 弄清楚了。因此,在我的实现中,我使用 Keyboard.KeyCode(0x60) 来查看键码是否为 num0(0x60 为 num0)。无论如何,这个答案是正确的,非常感谢。希望它能对一些人有所帮助,因为通过谷歌搜索这个问题,我已经浏览了数百页,但之前找不到答案。 (2认同)