python - 如何在 Python 中获取键码

标签 python input keycode

我必须知道按下了什么键,但不需要字符的代码,我想知道什么时候有人按下“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/

相关文章:

python 只识别我输入的第一行

javascript - 使用JS更改没有id的输入值

qt - 如何将 Windows native 虚拟键代码转换为 Qt::Key?

javascript - e.keycode 在 firefox 19.0.2 、chrome 25.0.1364.172 m、IE 8 中未定义

python - Django 1.9升级 "Not Supported"问题

python - 在单独的线程中运行 asyncio 循环,信号来自和到循环

python - 出现错误 :(Element not interactable) when sending keys into the input field in selenium python

java - 在 Cygwin 中工作时使用 Java 打开文件

java - 在 Java (OSX) 中设置三个按钮加速键热键

python - 找到最有值(value)的位置