0

例如, in input.h,KEY_D等于 32。在 QWERTY 键盘上,D 是主行左起第三个“可打印”键。在 DVORAK 键盘上,同一个键标记为 E。所以,如果我在 DVORAK 键盘上按 E,我会得到KEY_D(32) 还是KEY_E(18)?

4

1 回答 1

1

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

USB“HID 使用表”文档明确指出:

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

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

于 2017-08-08T06:16:15.723 回答