通过在Linux中按住一个键来选择字符(例如在OSX中)


18

我一直在想是否有任何可用的附加功能,例如Mac OSX。我的母语是西班牙语,现在我生活在法语环境中,我也经常说英语,所以我需要不同的口音,尤其是法文版,我已经使用Linux两年了,并且不时地使用Mac OS X进行测试。

我发现Mac OS X上的可用功能真的很有用,您可以在其中连续按该键,并显示相同字符,不同重音或标点符号的可用选项列表。我可以在Linux上这样做吗?

例如:

在此处输入图片说明


1
那会很rad。您能否发布此功能的屏幕截图?我认为说明这一点真是

Answers:


3

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

但是,我可以为您提供一种替代方法,您可能会发现比简单地更改键布局更有帮助。X(直到XIM)已有一段时间了,它提供了一个名为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一起提供,因此您需要做的就是设置它。XIM可以在此处找到有关设置Compose with的相关阅读资料,但您还应该注意,XIM这些天来已经很老了,它可能不是最佳选择。另外,至少还有一个其他IME支持Compose序列(尽管使用的实现略有不同):IBus

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


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

    setxkbmap -option compose:caps
    
  2. 我可以做梦吧?

最后一个有趣的提示是,本文中的所有“奇异”字符(包括é,“,”,µ,¹和²)都是使用XCompose生成的。


您会说XIM和使用compose键之间有什么区别吗?对我来说显而易见的是拥有Custom Keys,但是我相信您也可以使用Compose Key来实现这一点,我在Debian Base上使用Linux Mint作为Distro。我可能最终会按照您的建议设置一些东西,但是对我来说,学习它们之间的差异是很有教育意义的。,感谢您的回答。
ximbal

我认为您对设置有些困惑(这很可能是我的错)。XIM是提供Compose键的IME。我提到和演示的自定义序列与Compose键并没有分开,它们是我个人添加的扩展。因此,在include.XCompose代码段显示的第一行中,您将获得所有默认的Compose序列,然后在我认为合适的情况下添加更多(有时会覆盖一些默认值)。
HalosGhost

1
我会尝试的,我会尽快回复您,谢谢您的帮助
ximbal

0

您可能需要启用Compose Key。这使您可以使用符号“看起来像”合成的一部分来编写字符。我将其Alt Gr用作“撰写”密钥,但通常可以选择任何适当未使用的密钥。

例如,Compose o /将给出ø,Compose a `将给出à,以此类推。

这与使用“死键”非常不同,在死键中,除非连续两次击打重音符,否则它们不会显示为独立字符。这通常使程序员非常沮丧。

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


1
我知道使用组合键,但是记住所有可能的字符有15个不同的键序列并不是很明显,我知道这是一个可行的解决方案,而且已经存在很长时间了,但是我已经尝试过了,但最终忘记了按键顺序,还有很多其他需要重点关注的内容。感谢您尝试回答。
ximbal

1
如我的帖子所述,撰写是XIM(X输入模块)IME的功能。其他一些IME也提供类似的功能(例如IBus),但是任何XIM用于输入的GUI (可以同时设置GTKQt使用XIM)都可以支持Compose(如果已设置)。
HalosGhost
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.