iso_level3_shift和latch之间的区别

mbu*_*nit 8 x11 keyboard

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

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

// 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)"
};
Run Code Online (Sandbox Code Playgroud)

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

Jea*_*ean 6

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

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

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

- 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
Run Code Online (Sandbox Code Playgroud)

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

a AA aa aaaa
Run Code Online (Sandbox Code Playgroud)

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

a AA Aa AAAa
Run Code Online (Sandbox Code Playgroud)

因为在第三组之前的新闻发布循环之后,移位被锁存,并且在您按下键时消耗了该锁存器。在第四组中,在锁定时再次按一下锁定会使您进入锁定模式。

  • 迟到总比不到好!:) (2认同)