【发布时间】:2021-12-04 12:42:56
【问题描述】:
我有一个问题,ctypes.windll.user32.GetKeyState 无法检测到我键盘上的键(A、B、C 等),但它确实检测到鼠标左右键。
我正在尝试制作一个检测小写“a”键的简单脚本。我通过 ord('a') 得到了 97 号。
import ctypes
def a_pressed():
return ctypes.windll.user32.GetKeyState(97) > 1
while True:
if a_pressed():
print('a is pressed')
我做错了什么还是只是我不知道的 API 的一些限制?
【问题讨论】:
-
我不使用 Windows,但可能
GetKeyState使用不同的值,然后您从ord('a')获得。ord()提供char code,但系统可能使用不同的代码来检测密钥(硬件)在Linux 上,您可能会得到keycode,这与char code不同。系统获取键码并转换为取决于键盘布局的字符码(相同的键为英语或法语布局提供不同的字符)顺便说一句:有像keyboard或pynput这样的 Python 模块可以检测按下的键。也许你应该检查源代码,看看他们是否使用GetKeyState
标签: python windows keyboard ctypes