重新审视输入

我上次的更新提到了 GTK 输入法中组合序列的更好的视觉反馈。当时我没有明确提到死键,但从历史上看,X11 对待死键和组合序列的方式完全相同。

死键是某些键盘布局的一个特性,您可以按下一个本身不产生字符的键,但会修改您键入的下一个键。通常,这用于可以与不同基本字符组合的重音符号。例如,键入 <dead_acute> <a> 以产生 á 或 <dead_acute> <o> 以产生 ó。

传统上,死键是真正死的 – 在最终结果出现之前,您不会得到任何视觉反馈。通过上次更新中描述的改进,我们现在会在输入时显示死键

这是一个不错的改进。但事实证明,并非所有人都感到满意。

组合序列和死键的共享处理有一些含义:一个是输入诸如 <dead_grave> <x> 之类的非现有序列会产生哔哔声,并且没有输出。对于您使用组合键明确启动的组合序列,这是可以接受的,但是当您可能想要输入 `x 时,情况就不太好了。

那些决定使用组合序列来表示死键的人预见到了偶尔需要实际输入间隔重音的需求,并添加了诸如 <dead_grave> <space><dead_grave> <dead_grave> 之类的序列来产生单个 ` 字符。

虽然这是一个不错的想法,但仍然非常不方便,因为您需要键入 <dead_grave> 六次才能产生 `‍`‍`,例如在 markdown 中输入代码示例。

在考虑了一段时间并比较其他系统的工作方式后,我们进行了两项更改,希望使死键的使用像键盘上的其他任何键一样方便。

  • <dead key> <key> 序列与我们的组合序列之一不匹配时,提交各个键
  • 当一个 <dead key> 紧随另一个 <dead key> 之后时,提交第一个,并将第二个视为新组合序列的开始

总之,这使得键入 <dead_acute> <a> 产生 á,键入 <dead_grave> <x> 产生 `x,您只需要键入 <dead_grave> 三次即可输入 `‍`‍`:

好多了!