11

ISO_Level3_Shift 和 ISO_Level3_Latch 之间有什么区别,例如,在 /usr/share/X11/xkb/symbols 中(我确定在 archlinux 和许多其他发行版中)找到的 level3 配置文件。

例如,我将此条目添加到我正在处理的自定义键盘中(对于逻辑学家,不要担心,⊥ → 很棒)。

// make right control do level3 shift stuff
default partial modifier_keys
 xkb_symbols "rctrl_switch" {
  key <RCTL> {
    type[Group1]="ONE_LEVEL",
    symbols[Group1] = [ ISO_Level3_Shift ]
    };
  include "level3(modifier_mapping)"
};

它按预期工作(按住右控制使我可以访问 3 级符号,例如,我对 us-intl 布局变体拥有的主要是 unicode 代码点),但我想知道为什么有些条目使用 ISO_Level3_Latch,以及那是什么甚至意味着。

4

1 回答 1

10

shift 样式的修饰符的工作方式是,您必须在按住它的同时按下另一个键才能修改该键。这就是常规大写转换键在普通键盘上的工作方式。

闩锁式修饰符的作用相同,但与 shift 式修饰符相反,如果在按下另一个键之前释放它,则该修饰符被锁定,这意味着您将按下的下一个键将被修改。此外,如果在锁定时按下,修改器将被锁定,直到再次按下修改器键。

使用大写字母的常规移位示例。考虑以下击键顺序:

- Press a
- Release a
- Press & release space
- Press shift
- Press a
- Release a
- Press a
- Release a
- Release shift
- Press & release space
- Press shift
- Release shift
- Press a
- Press a
- Press & release space
- Press shift
- Release shift
- Press shift
- Release shift
- Press a
- Press a
- Press a
- Press shift
- Release shift
- Press a

如果 shift 设置为 shift-style,您将获得以下输出:

a AA aa aaaa

如果 shift 设置为闩锁样式,您将获得以下输出:

a AA Aa AAAa

因为在第三组之前的按下释放周期之后,shift 被锁定,并且当您按下 a 键时该锁定被消耗。在第四组中,在锁定时再次按下闩锁会使您进入锁定模式。

于 2015-09-04T07:21:14.733 回答