我必须知道按下了什么键,但不需要字符的代码,我想知道什么时候有人按下“A”键,即使获得的键是“a”或“A”,等等所有其他键。
我不能使用 PyGame 或任何其他库(包括 Tkinter)。只有 Python 标准库。而且这必须在终端而不是图形界面中完成。
不需要字符代码。我需要知道关键代码。
例如:
ord('a') != ord('A') # 97 != 65
someFunction('a') == someFunction('A') # a_code == A_code
最佳答案
参见 tty标准模块。它允许使用 tty.setcbreak(sys.stdin) 从默认的面向行(熟)模式切换到面向字符(cbreak)模式。 .从 sys.stdin 读取单个字符将导致下一个按下的键盘键(如果它生成代码):
import sys
import tty
tty.setcbreak(sys.stdin)
while True:
print ord(sys.stdin.read(1))
注意:解决方案仅适用于 Unix(包括 Linux)。
编辑:在 Windows 上尝试 msvcrt.getche()/getwche() ./我无处可试...
编辑 2:通过 ctypes.windll 使用 win32 低级控制台 API (参见 example at SO )具有 ReadConsoleInput
功能。您应该过滤掉按键 - e.EventType==KEY_EVENT
并查找 e.Event.KeyEvent.wVirtualKeyCode
值。可以在 http://www.benryves.com/tutorials/?t=winconsole&c=4 找到应用程序示例(不是在 Python 中,只是为了获得一个想法) .
关于python - 如何在 Python 中获取键码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/575650/