linux / input.h键码是否独立?

时间:2017-05-27 14:36:54

标签: linux keyboard keycode scancodes

例如,在input.h中,KEY_D等于32.在QWERTY键盘上,D是第三个"可打印"在主排左侧的钥匙。在DVORAK键盘上,相同的键标记为E.因此,如果我在DVORAK键盘上按E,我会获得KEY_D(32)还是KEY_E(18)?

1 个答案:

答案 0 :(得分:1)

您将获得KEY_D。这些值是键的抽象,因为它们被放置在典型的物理键盘上(参见ISO 9995),从所有接口细节中抽象出来(参见例如three PC scancode sets和其他网格)。但是,这还没有考虑其他布局,既没有像AZERTY这样的国家布局,也没有像Dvorak这样的特殊布局。它们在下一层实现,其中独立的密钥代码受修饰符影响并转换为结果字符串和事件。

USB“HID使用表”document明确说明:

  

请注意   关于用法和语言的一般说明:由于键盘从语言到语言的变化,为每种语言指定精确的键映射是不可行的。如果此列表不是特定于语言中的键功能,则应使用最接近的等效键位置,以便可以通过简单地打印不同的键帽来修改键盘以用于不同的语言。一个例子是北美键盘上的Y键。在德国,这通常是Z.供应商应使用Y,而不是更改键盘固件以将Z Usage放入描述符列表中的那个位置。   用于北美和德国键盘。这仍然是业界现有的做法,以尽量减少电子设备的变化以适应其他语言。

所以,即使您的键盘最初是Dvorak,也会得到KEY_D。您可以将其视为“通用”KEY_C03(再次参见ISO9995密钥名称),如果这满足(大多数XKB布局源使用此表示法)。