2017-05-27 36 views
0

例如,在input.h中,KEY_D等于32.在QWERTY键盘上,D是主行左侧的第三个“可打印”键。在DVORAK键盘上,同一个键被标记为E.因此,如果我在DVORAK键盘上按E,我会得到KEY_D(32)或KEY_E(18)?linux/input.h键码布局是否独立?

回答

1

您将得到KEY_D。这些值是从所有接口详细信息摘录(例如参见three PC scancode sets和其他网格)中抽取的,因为它们放置在典型的物理键盘上(参见ISO 9995)。但是,这并没有考虑到其他布局,无论是像AZERTY这样的国家布局,还是像德沃夏克这样的特殊布局。它们在下一层实现,其中独立键码受修饰符影响并转换为结果字符串和事件。

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

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

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