【发布时间】:2015-12-01 19:26:54
【问题描述】:
我一直在寻找一种方法来识别 Python 3 中 CAPS LOCK 的状态,我发现唯一适用的是 a post here in Stack Overflow answered by Abhijit 声明:
您可以使用 ctypes 加载 user32.dll,然后使用 nVirtKey = VK_CAPITAL (0x14) 调用 GetKeyState
def get_capslock_state(): import ctypes hllDll = ctypes.WinDLL ("User32.dll") VK_CAPITAL = 0x14 return hllDll.GetKeyState(VK_CAPITAL)
我已将此应用于我的脚本,但返回的值不是预期的 1/0,而是一个从不重复的长 9 数字序列。我不确定如何使用此值返回 1/0、T/F 或任何要测试的真实值。
任何想法,无论是基于 Abhijit 的评论还是其他适用于 Python 3 的方法?非常感谢您的帮助,因为这让我发疯了。
【问题讨论】:
-
它返回的长序列是什么?您使用的是什么操作系统?
-
该脚本当然是在 Windows 上运行的(因此是 WinDLL)。我正在运行 Windows 7 企业版,如果它有所作为的话。
-
对于返回的值,它总是在改变数字序列,但它总是9个字符长。上次运行的示例是“361693184”。
-
嗯,这很奇怪。当您使用
VK_NUMLOCK = 0x90或VK_SCROLL = 0x91作为参数时会发生什么?您是否得到了正确的结果,或者您是否与使用VK_CAPITAL时类似的垃圾? (参见GetKeyStateWinAPI docs)
标签: python windows python-3.3 capslock