更多关于输入

我之前写过关于输入的文章(这里这里),最近,Carlos 和我还在 Guadec 上做了一场关于输入相关主题的演讲(幻灯片)。在那些文章中,我解释了死键的工作原理,以及如何输入

<dead_acute> A

来产生 Á 字符。

但是输入充满了惊喜,我刚刚了解了一种死键的替代方案,值得在这里介绍一下。

背景

首先,让我们回顾一下当你将 <dead_acute> A 序列发送到 GTK 时会发生什么。

我们接收到第一个按键事件,并注意到它是一个死键,所以我们把它存储在我们称之为预编辑的地方,并等待下一个事件。当下一个按键到达时,它表示一个字母(更准确地说,在 Unicode 类别 Ll、Lu、Lt、Lm 或 Lo 中),我们查找与 dead_acute 匹配的 Unicode 组合标记,即 U+0301 COMBINING ACUTE ACCENT,然后我们翻转序列。因此,提交的文本是

A <combining acute>

我们必须翻转顺序的原因是组合标记位于基本字符之后,而死键位于之前。

这可以工作,但对于编写多重音字符来说有点不直观。你必须考虑从上到下应用的重音,因为它们是反向应用的。例如,要创建一个顶部带有锐音的 Â,你需要输入

<dead_acute> <dead_circumflex> A

然后它会被翻转过来,最终变成

A <combinining circumflex> <combining acute>

更好的方法

对我来说,按照以下顺序指定重音感觉更自然

  1. 给我一个 A
  2. 然后在上面放一个 ^
  3. 然后在上面放一个 ´

好消息是:我们可以做到这一点!键盘布局可以使用任何 Unicode 字符作为键符号,所以我们可以直接使用组合标记,而无需通过死键绕道。

例如,“英语(美国,国际,AltGr Unicode 组合)”布局包含用于组合标记的键。使用此布局的一个小障碍是它默认不显示在 GNOME 设置键盘面板中。你必须运行

gsettings set org.gnome.desktop.input-sources show-all-sources true

才能使其显示出来。

此布局中的组合标记放置在“第 3 层”。要使用它们,你需要设置一个“第 3 层选择器”键。在键盘面板中,这被称为“替代字符键”。一个常见的选择是右 Alt 键。

经过所有这些准备工作,你现在可以输入 A Alt+^ Alt+’ 来得到一个顶部带有 ́ 的 Â。太棒了!