GNU/Linux 文本控制台,不涉及 X11,甚至没有安装。键盘是美国布局,键盘映射美国默认。内核版本 2.20.x 或更高版本。
用 C 语言编写的应用程序在翻译模式下获取键盘输入,即XLATE
或UNICODE
. 当一个键被按下时,应用程序接收到相应的键串。例如,您按 F1,应用程序读取"\033[[A"
.
在内核向应用程序发送密钥字符串之前,它必须知道哪个键被按下,即它必须知道它的扫描码。在上面的 F1 示例中,按下的键的扫描码是 59 或 0x3b。
也就是说,即使键盘处于翻译模式,扫描码也会保存在内存中的某个位置。应用程序如何在不切换键盘
RAW
或MEDIUMRAW
模式的情况下访问它们?一个代码片段会有所帮助。