#unicode-characters #compose #x11 #unicode #emoji #file-search #xcompose

应用 bach-cli

用于搜索 .XCompose 文件的工具

3 个版本 (破坏性)

0.3.0 2023年6月25日
0.2.0 2023年5月11日
0.1.0 2023年4月30日

#1764 in 命令行工具

每月 22 次下载

BSD-2-Clause-Patent

495KB
12K SLoC

Bach

一个帮助你找到定义的 组合序列 的工具。

用法

提供一个作为位置参数的查询,然后将其与

  • 指定 -n 时产生的 Unicode 字符的名字进行匹配(不区分大小写)[^1]
  • 指定 -r 时组合序列的结果字符串(区分大小写)
  • 指定 -c 时序列定义后的注释(不区分大小写)

如果没有指定 -n-r-c,则匹配所有三个。

默认情况下,只显示以组合键开始的序列,使用 -a 标志可以显示所有序列(例如以死键开始的序列)。

解释

bach 可以以两种格式返回匹配的序列:作为它们出现在 .XCompose 文件中的样子(使用 -x 标志),或者其自己的“美观”格式(默认)。

.XCompose 格式在 Compose(5) 中描述。

美观格式对于每个序列:

<result><events> ~ <info>

其中

  • 结果 是该组合序列产生的字符串或 X11 键符。为了帮助区分键符,它们被设置为洋红色斜体。
  • 事件 是所需的按键。这些大多数是自解释的,但以下符号用于特殊键
    • 组合键本身是洋红色 ♦
    • 键盘键是蓝色的
    • 死键是一个带有组合标记的黄色虚圆圈,例如 ◌̂ 表示 XK_dead_circumflex
      • α 用于 XK_dead_greek
      • ι 用于 XK_dead_iota
      • ¤ 用于 XK_dead_currency
      • a–e 用于 XK_dead_a–e
    • 其他特殊符号为青色
      • 对应于 XK_Escape
      • 对应于 XK_BackSpace
      • 对应于 XK_Tab
      • 对应于 XK_Return
      • 对应于 XK_space
      • 对应于 XK_nobreakspace
      • 分别对应于 XK_UpXK_DownXK_LeftXK_Right
  • info 是组成文件中序列的行内注释,或在没有此类注释的情况下产生的字符名称[^1]。

个人组成文件

bach 将在 XCOMPOSEFILE 中查找您的个人组成文件,如果没有设置,则使用 ~/.XCompose

全局组成文件

bach 需要定位 X11 的全局组成序列文件,如果它们在您的个人组成文件中引用(例如,通过 include "%L"),或者如果您没有此类文件。默认情况下,它将使用 /usr/share/X11/locale,但可以通过以下方式更改:

  • 编译时设置 BACH_X11_SYSTEM_DIR_DEFAULT[^2]
  • 运行时设置 BACH_X11_SYSTEM_DIR
  • 使用 --x11-system-dir 参数

按优先级顺序。

限制

  • bach 将显示被后来定义的相同或更长的序列覆盖的序列
  • 八进制(\124)和十六进制(\x4F)字符转义始终被解释为相应的 Unicode 字符。
  • 您通常不应该在非 UTF-8 区域设置中使用它
  • 错误报告相当初步

序列兼容性

bach 理解 Compose(5) 中描述的完整 xcompose 文件格式,但是我在不同的程序和平台之间发现了对该完整规范的混合兼容性,特别是

  • 修饰符通常被忽略,并且可能会使序列无效
  • 八进制和十六进制字符转义并不总是受支持
  • 在某些情况下,将键码作为序列的结果指定不被识别

许可证

Bach 在 BSD-2-Clause Plus Patent 许可证下分发。

[^1]: 仅适用于产生一个字符的序列

[^2]: 当使用 nix build 构建时,这将设置为合适的值

依赖关系

~4–12MB
~106K SLoC