keyboard - iso_level3_shift和latch之间的区别

标签 keyboard x11

ISO_Level3_Shift 和 ISO_Level3_Latch 之间有什么区别,例如,在 level3 配置文件中,可以在/usr/share/X11/xkb/symbols 中找到(我确信在 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)"
};

它按预期工作(按住右键可以让我访问 3 级符号,例如,我为 us-intl 布局变体所拥有的大部分 unicode 代码点),但我想知道为什么某些条目使用 ISO_Level3_Latch,以及这意味着什么。

最佳答案

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设置为latch-style,您将得到以下输出:

a AA Aa AAAa

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

关于keyboard - iso_level3_shift和latch之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14743638/

相关文章:

flutter - 键盘将 modalBottomSheet 推出边界,resizeToAvoidBottomInset 不起作用

c++ - 在小部件中获取 QKeyEvents 的好方法是什么?

iOS 8 键盘扩展按钮不显示

ios - 出现键盘并查看滚动到顶部

linux - 如何查看linux X11版本?

linux - 在 GNU/Linux 世界中创建现代 GUI 应用程序的最简单方法是什么?

linux - 如何将 DISPLAY 导出到另一个 linux 主机的 Xserver

ios - 在 Swift 中使用自动布局显示键盘时保持 TableView 的底部可见

gpu - 什么是 BaseMosaic (NVidia/X11)

node.js - NPM 在通过 apt 安装时需要 x11