2021SC@SDUSC
一.配置文件格式
- .yaml文件是配置文件,是我们主要修改的一块.例如(default.yaml 是输入法配置文件夹, luna_pinyin.schema.yaml,是luna(明月)输入方案的配置文件)
- .custom.yaml是用户用来自定义配置的内容.
- .bin文件是rime输入法自动生成的, 不需要去动.
- .table.bin 是生成的词库文件(在重新部属的时候会自动生成需要导入词库的.table.bin文件.)
二.配置原理
在输入法重新部属的时候, 会所需要的设置文件, 词库文件等。在生成default.yaml的时候, 会去同名的default.custom.yaml中读取设置, 如果与默认设置冲突, 则以用户设置为准, 然后再生成改动过的default.yaml文件。
这和Python中的类的继承顺序是一样的. 会先调用子类,冲突项目使用子类, 如未设定 则读取父类相关设定。
三.配置简介
配置分为三个方面。
- 输入法方面: 根据default.yaml 创建default.custom.yaml
- 输入方案方面: 根据luna_pinyin.schema.yaml 创建luna_pinyin.custom.yaml
- 词库方面: 手动创建 xxx.dict.yaml 文件.
##这些个文件是最重要的, 保存着你对输入法的自己的定制.。只要保存好自己的设置文件和词库文件, 配置里面的文件都删掉也都无所谓, 重新布署之后又会生成默认文件。只要在rime重新布署的时候发现用户的配置文件, 就会改写默认配置。
关于配置文件的格式语法:
配置文件的语法遵照yaml语言。
default.custom.yaml和luna_pinyin.custom.yaml这两个文件的书写格式和对应文件default.yaml, luna_pinyin.yaml几乎是一样的。不过需要在文件头增加patch: 然后之中写入的配置,较原文件增加一个单位的缩进,对应于patch:.(yaml中缩进为两个空格). # 表示注释, 可以出现行中任意位置, 之后的内容不会被解释器解释。
1.Rime 的各种配置,均是由 .yaml 文件所定义。
2.yaml 是一种标记语言。.yaml 文件实际上是文本文档。可使用记事本、或 Emeditor 等进行编辑。
3.对 Rime 进行自定义,是通过对 .custom.yaml 文件修改达成。不同的 .custom.yaml 文件,控制不同的功能实现。 .custom.yaml 实际上是相当于对 .yaml 文件打补丁,在重新部署后,会将 .custom.yaml 中的内容写入 .yaml 文件中,完成自定。
例一: weasel.yaml 是常规设置,主要控制托盘图标、候选词横竖排列、界面配色等等功能。那么,我们需要定制界面配色,只需在 weasel.custom.yaml 中修改,重新部署后就可实现。
例二: default.yaml 是默认设置,主要控制快捷键、按键上屏等等。同样,作修改就编辑 default.custom.yaml 文件即可。
例三:以上是全局设置,亦即不论使用何种输入方案,均起作用。 double_pinyin_flypy.custom.yaml 这种则是输入法方案设置。主要实现特殊标点符号、词库等功能。是针对特定输入方案的配置。
在“部署”操作时,将用到这里的输入方案源文件、并结合用户定制的内容来编译预设输入方案。
用户资料夹 则包含为用户准备的内容,如:
〔全局设定〕 default.yaml
〔发行版设定〕 weasel.yaml
〔预设输入方案副本〕 <方案标识>.schema.yaml
※〔安装信息〕 installation.yaml
※〔用户状态信息〕 user.yaml
五.输入法引擎与功能组件
Rime 输入法的工作流程:
按键消息→后台“服务”→分配给对应的“会话”→由“方案选单”或“输入引擎”处理……
这里要点是,有会话的概念:多窗口、多线操作,同时与几人聊天时,有好几组会话, 每一组会话中都有一部输入引擎完成按键序列到文字的变换。
Rime 可以在不同会话里使用不同输入方案。因为有“方案选单”。 方案选单本身可响应一些按键。但由于他不会写字的缘故,更多时候要把按键递给同一会话中的“输入引擎”继续处理。 方案选单的贡献,就是给用户一个便捷的方案切换介面,再把用户挑中的输入方案加载到输入引擎。
输入引擎的工作流程:
加载输入方案、预备功能组件;各就位之后就进入处理按键消息、处理按键消息……的循环。
响应各种按键、产生各类结果的工作,由不同的功能组件分担。
#luna_pinyin.schema.yaml
...
engine: # 输入引擎设定,即挂接组件的“处方”
processors: # 一、这批组件处理各类按键消息
- ascii_composer # ※ 处理西文模式及中西文切换
- recognizer # ※ 与 matcher 搭配,处理符合特定规则的输入码,如网址、反查等
- key_binder # ※ 在特定条件下将按键绑定到其他按键,如重定义逗号、句号爲候选翻页键
- speller # ※ 拼写处理器,接受字符按键,编辑输入码
- punctuator # ※ 句