运行.xkb可以获得当前XKB配置的keymap源(以xkbcomp $DISPLAY -格式)。到keysym的映射是在该文件的xkb_symbols部分完成的。本节中的一些定义显式地定义了键type,它指示哪些修饰符对各个keysym级别进行索引;例如:
key <AD01> {type= "ALPHABETIC", [q, Q]};其他行没有指定它们的类型;例如:
key <AE01> {[1, exclam]};在这种情况下,类型是模棱两可的,因为该文件的xkb_types部分定义了多个两级类型(TWO_LEVEL、字母表、键盘、SHIFT+ALT、PC_SUPER_LEVEL2等)。因此,对于给定数量的级别,必须存在隐式(或默认)类型(例如,当没有给定类型但存在两个级别时,则为隐式两级类型)。这些隐式类型是在哪里定义的?仅仅是xkb_types中出现的第一种类型具有所需的级别数吗?
发布于 2022-02-05 02:42:32
在第12.2.3节(第41-42页)和附录B的X键盘扩展:协议规范中为X11R6.4指定了默认值。具体来说,ONE_LEVEL、TWO_LEVEL、字母和键盘被认为是标准类型,并在字母数字展开后根据以下标准进行选择:
对于每个没有显式类型定义的键盘组,XKB从规范键类型中选择一个键类型。如果分配给组的第二个符号是NoSymbol (在字母表扩展后),服务器将指定键类型ONE_LEVEL。如果组包含单个字形的小写和大写形式(在字母数字展开后),则服务器将分配键类型为字母。如果组中的任何一个符号是数字键盘密钥系统(KP_*),则服务器将分配键类型键。否则,它将指定键类型TWO_LEVEL。
该协议不为具有两个以上级别的组指定规范类型。
https://unix.stackexchange.com/questions/689341
复制相似问题