X 如何从内核键扫描代码映射到键符号?

X 如何从内核键扫描代码映射到键符号?

根据这一页没有从 udev 键映射到 X 的直接映射,它有自己的映射。

X 有一种(准)完全独立的映射键的方式:X 在启动时读取内核键码表,然后将键码映射到其独立的键码表(它与内核键码相同但不同:))

有人可以详细说明,也可以解释或指出为什么 X 会这样做,忽略 udev 吗?

答案1

您做出了几个错误的假设:X 忽略了 udev(它没有); udev 直接干预键盘映射(它只设置它们,除此之外它是内核起作用的); X 基于 Linux(它也可以在其他 UNIX 变体上运行)。

Udev 在键盘处理中只发挥非常有限的作用:它检测特定的键盘型号并声明其供应商特定的键。 Udev 不对标准键(如A和 )起作用F1,仅对供应商特定的键(如Brightness up或 )起作用Wifi on/off(通常用图标标记)。这些键通常不被应用程序使用,而是映射到 ACPI 事件。

Linux 内核对于常用键有自己的映射方案,您可以使用命令进行设置loadkeys。如果插入了多个键盘,则 udev 执行的设置特定于一个键盘,而loadkeys作用于全局内核键盘映射。

内核的键盘映射并没有涵盖 X 提供的几乎所有细微差别。因此 X 有自己的方案,并且在很大程度上忽略内核设置。 X 确实考虑了通过 udev 设置的键盘特定映射。

答案2

您猜对了:X11 键盘驱动程序直接与键盘设备对话,以接收原始按键作为键码。

这是因为 X11 想要对键盘进行低级访问,而不仅仅是熟事件。可以通过多种方式指定键码和键符号之间的映射:

相关内容