xkb 中的隐式类型

xkb 中的隐式类型

当前XKB配置的键盘映射源(.xkb格式)可以通过运行获取xkbcomp $DISPLAY -。映射到键符号是在xkb_symbols此文件的部分中完成的。本节中的一些定义显式定义了 key type,它指示哪些修饰符对各个keysym级别进行索引;例如:

key <AD01> {type= "ALPHABETIC", [q, Q]};

其他行不指定其类型;例如:

key <AE01> {[1, exclam]};

在这种情况下,类型是不明确的,因为此文件的部分中定义了多个两级类型xkb_types(TWO_LEVEL、ALPHABETIC、KEYPAD、SHIFT+ALT、PC_SUPER_LEVEL2 等)。因此,对于给定数量的级别必须有隐式(或默认)类型(例如,当未给出类型但存在两个级别时,隐式两级类型)。这些隐式类型在哪里定义的?它只是其中出现的第一种xkb_types具有所需级别数的类型吗?

答案1

默认值在X 键盘扩展:协议规范对于第 12.2.3 节(第 41-42 页)和附录 B 中的 X11R6.4。具体而言,ONE_LEVEL、TWO_LEVEL、ALPHABETIC 和 KEYPAD 被视为规范类型,并在字母数字扩展后根据以下标准进行选择:

对于每个没有显式类型定义的键盘组,XKB 从规范的按键类型中选择一个按键类型。如果分配给组的第二个符号是 NoSymbol(按字母扩展后),则服务器分配密钥类型 ONE_LEVEL。如果该组包含单个字形的小写和大写形式(字母数字扩展后),则服务器分配键类型 ALPHABETIC。如果组中的任一符号是数字小键盘键盘符号 (KP_*),则服务器分配按键类型 KEYPAD。否则,它分配密钥类型 TWO_LEVEL。

该协议没有为具有两个以上级别的组指定规范类型。

相关内容