/openfly

词库开源的小鹤音形 Rime 配方

Primary LanguageLuaMIT LicenseMIT

开源小鹤

配方: ℞ openfly

词库开源的小鹤音形 Rime 输入方案

现状

由于小鹤官方的词库是「闭源」的,并且在禁止反编译的情况下难以导出,我已经放弃小鹤音形,转而使用星空键道(入门推荐这个第三方教程),词库版本就无限期停留在 v9.9m。但这个仓库不会归档,因此有任何词库上、lua 代码上的更新,欢迎提出拉取请求。如果有公认的更好的分叉仓库,我会更新 README 引流过去。

问题和资源

小鹤音形的使用相关

请参考小鹤入门小鹤论坛,也欢迎在讨论页面参与讨论。

Rime 引擎的配置相关

请参考 Rime 官方帮助页面, 以及网上也能搜索到许多教程。如果还是有问题,也可以在讨论页面提出。

本配方相关

请先参考本文,如果是本文没有提到的使用上的问题,可以在讨论页面提出;如果怀疑是程序错误、词库错误、配置错误等,可以在议题页面提出;如果想要贡献代码或修改词库,也可以提交拉取请求

安装

最新版本

东风破 安装口令:

# 默认版本,词典分为多个文件
$ bash rime-install amorphobia/openfly
# 词典合并版本,除用户词典以外,合并为一个文件
$ bash rime-install amorphobia/openfly@merged_dict

更新口令(在安装口令后加 :update, 可以不覆盖 openfly.user.dict.yamlopenfly.user.top.dict.yaml 两个文件):

# 默认版本
$ bash rime-install amorphobia/openfly:update
# 词典合并版本
$ bash rime-install amorphobia/openfly@merged_dict:update

由于 plum 不能自动为 lua 脚本打补丁,因此还需手动在 rime.lua 文件中添加以下代码:

openfly_shortcut_processor = require("openfly_shortcut_processor")
openfly_date_translator = require("openfly_date_translator")
openfly_time_translator = require("openfly_time_translator")
openfly_shortcut_translator = require("openfly_shortcut_translator")
openfly_hint_filter = require("openfly_hint_filter")
openfly_deletion_filter = require("openfly_deletion_filter")

特定版本

东风破 安装口令:

$ bash rime-install amorphobia/openfly@<tag>

注意:

手动安装

  1. 将所需文件复制(或软链)到 Rime 的用户目录

  2. lua 目录中的所有 *.lua 文件复制(或软链)到 Rime 的用户目录中的 lua 目录下,若无此目录需要新建,并在用户目录中的 rime.lua 文件后添加补丁代码

  3. defult.custom.yaml 里启用此方案,然后重新部署

词典分类

  • 首选字词 openfly.primary.dict.yaml
  • 次选字 openfly.secondary.char.dict.yaml
  • 次选词 openfly.secondary.word.dict.yaml
  • 表外字 openfly.off-table.dict.yaml
  • 符号编码 openfly.symbols.dict.yaml
  • 快符号 openfly.fast.symbols.dict.yaml
  • 直通车 部分实现,见直通车部分
  • 随心所欲 openfly.whimsicality.dict.yaml
  • 隐藏全码 未直接收录,反查词典是基于全码首选的单字和隐藏全码的单字生成
  • 二重简码 openfly.secondary.short.code.dict.yaml, 默认开启,可在 openfly.dict.yaml 里注释掉以关闭
  • 内嵌提示 官方未单独显示此词库 openfly.embedded.hint.dict.yaml

直通车

官方版 Rime 挂载配方已通过 lua_translator 实现时间和日期的输入,本配方稍作修改,使其与官方安装版输出一致。

四个小鹤的网址放在 openfly.web.dict.yaml 里,与官方安装版不同的是,网址是作为上屏词组输出,而非直接运行浏览器打开。

直通车中打开外部程序的命令通过 lua_processor 实现。由于 Lua 中 os.execute 的限制,在 Windows 中运行命令时会闪现一个命令提示符窗口。

已实现的快捷指令(括号内标注已实现平台):

  • oav 打开 Rime 程序目录 (Windows/macOS)
  • ocm 打开命令提示符或终端 (Windows/macOS)
  • odn 文件管理器 (Windows/macOS)
  • oec Excel (Windows/macOS)
  • ogj 高级设置,即打开 Rime 用户目录 (Windows/macOS)
  • oht 画图软件 (Windows)
  • ojs 计算器 (Windows/macOS)
  • owd Word (Windows/macOS)

删词功能

6ee1bac 起,支持在用户词典中加入编码来删除词库中(包括内嵌编码提示词库)的词条,使用方式是在用户词典 openfly.user.dict.yamlopenfly.user.top.dict.yaml 中添加如下格式的词条

词语`[删]	编码

其实在任意一个词典里添加都可以,不过建议不修改配方中的词典,这也是为什么推出删词功能的原因——删词的时候可以不修改配方中的词典,避免更新的时候改动被覆盖。

需要注意的是,词语后的撇号是键盘上数字 1 左边的符号;撇号后面的“删”字前后有半角的方括号,和编码之间是制表符而不是空格。

例如,想要删除“鹤 eh”这个不规则的编码,可以在用户词典里加上:

鹤`[删]	eh

如此一来,“鹤”字就只能通过 hedn 这个编码打出,而 eh 就可以放入你想要的词了。

候选展开

原版小鹤音形基于多多输入法,可以使用命令生成特殊的候选,选择之后并非上屏词语,而是展开新的输入。比如输入 ofb, 显示的候选是「d(标点)、,。」,但选择之后输入码变成了 ofbd, 候选也变成了相应的。

626d100 起,本配方使用 lua 脚本实现了这个功能。

候选格式

用于展开的候选与普通候选一样,由词组、tab 和编码组成,其中词组分为两个部分,第一部分是展开后的编码,用 $ 标识出,第二部分用于候选展开前的显示,与第一部分用 ` 隔开。例如

$ofbd`d(标点)、,。	ofb

其中 $ofbd 是展开后的编码,选中这个候选就如同输入了 ofbdd(标点)、,。 是展开前的提示,而与之用 tab 隔开的 ofb 则是输入码。

已知限制

  1. 由于 librime-lua 的一个程序错误,直到 00c999b 之后,才能正确地判断一个 Composition 是否为空,因此对于较旧的版本,候选展开不起作用,会直接上屏。请升级 rime 引擎到 1.7.2 或以上。
  2. 二重简码的切换开关暂时无法使用。目前 librime 最新的版本为 1.7.3,发布于2021年2月12日;二重简码切换开关依赖于 librime-lua 的 88ba821,代码合并于2021年3月5日。如果要将其打开,一个暂时的方案是在 switches 里加上一个名为 openfly_enable_2nd_short 的开关,设其值为 1,见此例;有能力的可以使用最新的代码编译 librime 及其插件。

许可和授权条款

小鹤音形官方词库和原始配置文件

小鹤音形输入法最终用户许可协议

其他整理词库和配置文件

BY-NC

程序代码部分

MIT