在 Linux 中按住某个键来选择字符(就像在 OSX 中一样)

在 Linux 中按住某个键来选择字符(就像在 OSX 中一样)

我一直想知道是否有任何可用的附加组件可以执行类似 Mac OS X 的功能。我的母语是西班牙语,现在我生活在法语环境中,我也经常说英语,所以我需要不同的口音,特别是法语,我已经使用 Linux 两年了,并且时不时地使用 Mac OS X,用于测试目的。

我发现 Mac OS X 上的功能非常有用,您按住该键,它就会显示相同字符、不同重音或标点符号的可用选项列表。我可以在 Linux 上执行此操作吗?

答案1

恐怕据我所知没有任何应用程序可以做到这一点。开发一个可能需要创建您自己的输入法(以替换XIM)。

不过,我可以为您提供一种替代方案,您可能会发现它比简单地更改按键布局更有帮助。XIM一段时间以来,X(通过)提供了一个名为 XCompose 的实用程序。 XCompose 允许您通过按前导键(您指定的),然后按可自定义的按键序列来键入“异国情调”字符。例如,Composee'产生字符é。大多数情况下,默认序列非常直观,但 XCompose 最强大的部分是您可以添加(或修改)序列,以便理论上生成您认为合适的任何 unicode 字符。

序列的设置是通过纯文本文件完成的(您可以将其放入$HOME/.XCompose或放在其他地方但有$HOME/.XCompose代码(您可以查看我的整个设置这里如果你感兴趣;特别查看XCompose和 下的文件compose/)。下面是我个人的一个片段$HOME/.XCompose

include "%L"     # This enables all the default bindings
include "/home/halosghost/.compose/greek.compose" # some greek characters

现在是上面包含的片段greek.compose(请注意,这些肯定不是您可以使用的最符合人体工程学或最有效的序列,它们只是一个示例):

# Lower case
<Multi_key> <a> <l> <p> <h> <a>     : "α"   U03B1   # Alpha
<Multi_key> <b> <e> <t> <a>         : "β"   U03B2   # Beta
<Multi_key> <d> <e> <l> <t> <a>     : "δ"   U03B4   # Delta
<Multi_key> <g> <a> <m> <m> <a>     : "γ"   U03B3   # Gamma
<Multi_key> <l> <a> <m> <b> <d> <a> : "λ"   U03BB   # Lambda
<Multi_key> <p> <i>                 : "π"   U03C0   # Pi
<Multi_key> <m> <u>                 : "µ"   U03BC   # Mu

您会看到这些文件的格式实际上非常简单(尽管在某些情况下您不使用字符本身而是使用它的名称(例如,<period>而不是<.>))。

有了上面的内容,我现在可以输入Capsmu生成µ(请注意,我的 Compose 键设置为Caps)。

您没有提及您正在使用(或正在考虑使用)哪个发行版,但 XCompose 附带 xorg,因此您需要做的就是设置它。设置 Compose with 的相关阅读XIM可以找到这里,但您还应该注意XIM这些天它已经变得相当老旧了,它可能不是最好的选择。此外,至少还有一个其他 IME 支持 Compose 序列(尽管它使用略有不同的实现):总线

就我个人而言,我使用XIM,并且我希望一直这样做,直到我切换到 wayland(我希望那里会有一个全面更好的 IME 等着我²),但这是 Linux;一种尺寸并不适合所有情况,您应该使用最适合您的工作流程的尺寸(在合理范围内)。


  1. 从该链接中,您会发现可以通过以下命令轻松设置用于 Compose 的键(假设您的键盘不够深奥,实际上没有专用的 Compose 键)Caps

    setxkbmap -option compose:caps
    
  2. 我可以做梦,对吗?

作为一个有趣的最后说明,本文中的所有“异国情调”字符(包括 é、“、”、μ、1 和 2)都是使用 XCompose 生成的。

答案2

您可能想要启用您的撰写键。这允许您使用“看起来像”组合部分的符号来组合字符。我将Alt Gr其用作撰写键,但通常可以选择任何适当的未使用键。

例如,Compose o /将给出 ø,Compose a `将给出 à,等等。

这与使用非常不同死键,其中重音字符不会作为独立字符出现,除非连续点击两次;这通常会让程序员非常沮丧。

Compose Key 功能已经存在很长时间了(我相信它出现在“真正的”Sun 终端上)。它内置于基于 Linux 的系统上的大多数(许多?全部?)GUI。我知道并也在使用 Windows 的相应软件。

相关内容