在没有键盘或多个键盘的情况下使用 X Keycodes?

在没有键盘或多个键盘的情况下使用 X Keycodes?

在我的笔记本电脑中,我使用 QJoypad 将一些按钮映射到按键,这样我就可以使用街机按钮玩一些复古游戏。 Qjoypad 创建了这样的东西:

Joystick 1 {
    Axis 1: +key 116, -key 111
    Axis 4: +key 113, -key 114
    Button 1: key 65
}

这些数字是 X 键码,可以通过程序找到xev。从这里

X 服务器使用两级密钥编码,其中包括 X 密钥代码和密钥符号。 X 键代码是一个单字节值。将按键代码分配给按键取决于 X 服务器实现和物理键盘。因此,X 应用程序通常无法直接使用键代码。相反,键代码被映射到具有空格、转义、x 和 2 等名称的键符号。

然而,我在这里感到困惑。

  • 如果我的系统中有 2 个键盘怎么办?

  • 如果我没有键盘(例如,使用 Raspberry Pi)怎么办?

在这个教程,这家伙使用 Qjoypad 与 Raspberry Pi 和外部键盘。如果把键盘拿掉,东西还能用吗?那么 X Keycodes 是如何生成的呢?

答案1

X 中的键盘操作通过向包含键码(认为:键盘上按键位置的数字)和键符(认为:实际符号的数字,例如aEnter)的应用程序发送消息来工作。 X基础设施并不关心这样的事件来自哪里,您可以从另一个应用程序合成它QJoypad,或者附加任意数量的键盘来生成这样的事件。

事实上,如果您使用 查看设备树xinput,您会看到多个设备附加到“虚拟核心键盘”,并且所有这些设备都可以生成按键事件(其中许多将是“电源按钮”按键事件)。

所以:无论您的系统中有零个、两个还是一百个键盘,它都可以正常工作。

但是,您需要键符和键码。有一些例程可以找到键码的匹配键和(反之亦然),所以我确实希望QJoypad使用它们。

相关内容