Linux Fu: Compose Yourself!
我们的计算机能够显示令人惊叹的各种符号。仅Unicode就定义了超过150,000个字符,涵盖了从数学运算符和音标字母到表情符号和晦涩的历史书写系统的一切。然而,我们的键盘却顽固地局限于几十个键。
在Windows上,传统的解决方案涉及记忆数字编码或翻阅字符映射表。而作为Linux,它提供了更为灵活的东西:XCompose。这是一个强大、低调而卓越的功能,已存在许久,几乎随处可用,却仍感觉像个秘密。
XCompose是X11输入系统的一部分。它允许你定义组合序列:能够产生Unicode字符的简短按键序列。可以将其视为一个增强版的可编程“死键”系统。这可以简单到将「E」编程为产生欧元符号,也可以复杂到将“flower”转换成一个小花表情符号。尽管该系统源于X11,但我听说它在Wayland下也基本适用。那么,让我们深入了解。
启动XCompose
关键在于Compose键或Multi键。按下它本质上是进入XCompose模式,这样当你输入“flower”时,系统知道你不是要输入这些字母本身。你可以在系统设置中选择哪个键盘键作为你的Compose键。右Alt或Ctrl键是常见的选择。我使用Caps Lock键,因为我几乎从不将其用于其他用途。
你也可以通过其他方式设置Compose键,包括在~/.XCompose文件中,但在系统设置中设置通常更简单。不过,~/.XCompose是你可以设置自定义规则的地方之一。
默认情况下,你应该已经有一些有用的组合。例如,<Compose> ' e 应该给你 é,而 <Compose> " o 应该给你 ö。默认规则位于 /usr/share/X11/locale/*/Compose,其中 * 是你选择的区域设置。
自定义
默认规则通常涵盖了很多内容。但你可能想要定义自己的规则。你可以通过创建或编辑 ~/.XCompose 文件来实现。此文件可以包含规则或包含其他规则文件。不过,我听说Wayland不支持包含,所以如果你使用Wayland,需要注意这一点。
文件格式足够简单,每行一个定义:
|
|
不要犯这样的错误:尝试写类似 <@> 的东西。所有特殊字符都需要使用X11的 keysymdef.h 文件中的名称,如 <at> 或 <asterisk>。
当你创建自定义文件时,通常会以以下内容开始:
|
|
这告诉系统加载你的区域设置的默认值。你也可以使用 %H 表示你的主目录,或 %S 表示系统目录。在某些系统上,你可能需要使用 "/%L"。
正式地,配置行如下所示:
|
|
<EVENT> 允许你不仅指定按键,还可以指定必须存在或不能存在的修饰键。<RESULT> 可以是一个字符串或一个字符,你甚至可以插入一个八进制或十六进制数字以确保得到你想要的键。更多信息请阅读手册页。
值得注意的是,你提供的任何定义都将覆盖系统定义,所以如果你不喜欢某个定义,很容易将其重定义为其他内容。一个好处是,结果不一定必须是单个字符。你可以使用整个字符串系统。例如:
|
|
据我所知,没有办法在结果中嵌入始终有效的新行。你可以尝试使用类似 \xa 的东西,但 \n 不行。此外,替换功能在密码/PIN输入中不起作用,这是设计使然。
为什么要自己构建?
你可以构建对自己有意义的字符串。但你知道已经有人做过了。这个仓库包含一个有趣定义的核心文件和一些额外的文件。我的建议是:不要使用他们的安装功能,那只给你核心文件。只需像这样创建自己的文件,根据你放置文件的位置进行调整:
|
|
请记住,当你更改此文件时,它只会应用于更改后启动的GUI应用程序。试试 <Compose> : ) 来获取,以及其他。
如果你不喜欢那个集合,还有其他的。
一些常见用例
音乐?试试 ♭ (#b) 或 ♯ (##)。你甚至可以制作音符,如 ♪ (#e)。喜欢数学?怎么样 ≠ (/=) 或平方根符号 √ (v/)。如果你的数学更偏向会计,你可以写关于欧元 (€ – =E) 或日元 (¥ – =Y) 的内容。火腿族会欣赏 /O 产生 Ø(注意,输入时是大写O)。
还有很多其他的。最好的了解方法是查看你正在使用的文件并进行实验。
|
|
编写诸如你的姓名、电子邮件地址等内容很容易。因为你可以使用名称而不是晦涩的击键,所以使用起来要容易得多。例如,我忘记了我的名字是在 Macro+F5 上,但 <Compose>@name 很容易记住。我发现,如果我用某个字符(如“@”)作为所有(或大部分)个人命令的前缀,会更容易记住。所以我可能会有 @name、@add、@tel 和 @email。只是别忘了,实际规则必须使用键名:
|
|
某些应用程序,特别是GTK应用程序,不经过一些调整就无法与XCompose配合使用。特别是,你可能需要覆盖默认的输入法。如果这个问题困扰你,快速搜索“XCompose and GTK”应该会给你一些建议。总是有可能你的应用程序,甚至应用程序中的某些输入字段,无法与XCompose配合工作。生活就是这样。
它不是什么
请记住,XCompose仅在GUI中有效。它不是上下文感知的。它不允许你插入多行。如果你需要脚本和其他高级功能,这里不是合适的地方。只想有时映射键吗?你可以做到,但不是用这个工具。
但对于几乎通用的键盘重映射,一旦你习惯了语法,它就能很好地工作。你的 .XCompose 文件中有最喜欢的一行吗?在评论中分享吧!