【发布时间】:2019-02-02 03:42:38
【问题描述】:
我正在尝试使用 pyHook 阻止键盘上的所有键,但大写锁定键除外。下面是只阻止 a 和 A 键的代码,我希望做相反的事情。我需要做什么来扭转这种情况?
我尝试将所有键都放在大写字母旁边,但这似乎是错误的处理方式
def OnKeyboardEvent(事件):
# 只屏蔽字母 A,小写和大写
return (event.Ascii not in (ord('a'), ord('A')))
【问题讨论】:
我正在尝试使用 pyHook 阻止键盘上的所有键,但大写锁定键除外。下面是只阻止 a 和 A 键的代码,我希望做相反的事情。我需要做什么来扭转这种情况?
我尝试将所有键都放在大写字母旁边,但这似乎是错误的处理方式
def OnKeyboardEvent(事件):
# 只屏蔽字母 A,小写和大写
return (event.Ascii not in (ord('a'), ord('A')))
【问题讨论】:
如果函数返回True,似乎事件并没有被阻塞。
import string
def OnKeyboardEvent(event):
return event.Ascii in string.ascii_uppercase
或者return.Ascii in map(ord, string.ascii_uppercase)。
【讨论】:
由于大写锁定本身不可打印,因此它不会反映在事件的 Ascii 属性中。
但还有其他属性——即 KeyID:
http://pyhook.sourceforge.net/doc_1.5.0/
根据此表,使用它来查找大写锁定:
https://docs.microsoft.com/en-us/windows/desktop/inputdev/virtual-key-codes
【讨论】: