Rime 输入法方案配置手册

## 一、 Schema.yaml 文件详解

1.1 开始之前

1
2
# Rime schema
# encoding: utf-8

1.2 描述档

  1. name: 方案的显示名偁〔即出现于方案选单中以示人的,通常为中文〕
  2. schema_id: 方案内部名,在代码中引用此方案时以此名为正,通常由英文、数字、下划线组成
  3. author: 发明人、撰写者。如果您对方案做出了修改,请保留原作者名,并将自己的名字加在后面
  4. description: 请简要描述方案历史、码表来源、该方案规则等
  5. dependencies: 如果本方案依赖于其它方案〔通常来说会依頼其它方案做为反查,抑或是两种或多种方案混用时〕
  6. version: 版本号,在发布新版前请确保已陞版本号

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
schema:
name: "苍颉检字法"
schema_id: cangjie6
author:
- "发明人 朱邦复先生、沉红莲女士"
dependencies:
- luna_pinyin
- jyutping
- zyenpheng
description: |
第六代仓颉输入法
码表由雪斋、惜缘和crazy4u整理
version: 0.19

1.3 开关

通常包含以下数个:

  1. ascii_mode 是中英文转换开关。默认0为中文,1为英文
  2. full_shape 是全角符号/半角符号开关。注意,开启全角时英文字母亦为全角。0为半角,1为全角
  3. extended_charset 是字符集开关。0为CJK基本字符集,1为CJK全字符集
  • table_translator可用
  1. ascii_punct 是中西文标点转换开关,0为中文句读,1为西文标点。
  2. simplification 是转化字开关。一般情况下与上同,0为不开启转化,1为转化。
  • simplification选项名偁可自定义,亦可添加多套替换用字方案:
1
2
3
- name: zh_cn
states: ["汉字", "汉字"]
reset: 0

1
2
3
4
5
6
- options: [ zh_trad, zh_cn, zh_mars ]
states:
- 字型 → 汉字
- 字型 → 汉字
- 字型 → 䕼茡
reset: 0
  • name/options名:须与simplifieroption_name相同
  • states:可不写,如不写则此开关存在但不可见,可由快捷键操作
  • reset:设置默认状态〔reset可不写,此时切换窗口时不会重置到默认状态〕
  1. 字符集过滤。此选项没有默认名偁,须配合charset_filter使用。可单用,亦可添加多套字符集:
1
2
3
- name: gbk
states: [ 增广, 常用 ]
reset: 0

1
2
3
4
5
6
7
8
- options: [ utf-8, big5hkscs, big5, gbk, gb2312 ]
states:
- 字集 → 全
- 字集 → 港台
- 字集 → 台
- 字集 → 大陆
- 字集 → 简体
reset: 0
  • name/options名:须与charset_filter``@后的tag相同
  • 避免同时使用字符集过滤和extended_charset

示例

1
2
3
4
5
6
7
8
9
10
11
12
switches:
- name: ascii_mode
reset: 0
states: ["中文", "西文"]
- name: full_shape
states: ["半角", "全角"]
- name: extended_charset
states: ["通用", "增广"]
- name: simplification
states: ["汉字", "汉字"]
- name: ascii_punct
states: ["句读", "符号"]

1.4 引擎

  • 以下加粗项为可细配者,_斜体_者为不常用者

引擎分四组:

一、processors

  • 这批组件处理各类按键消息
  1. ascii_composer 处理西文模式及中西文切
  2. recognizermatcher搭配,处理符合特定规则的输入码,如网址、反查等tags
  3. key_binder 在特定条件下将按键绑定到其他按键,如重定义逗号、句号为候选翻页、开关快捷键等
  4. speller 拼写处理器,接受字符按键,编辑输入
  5. punctuator 句读处理器,将单个字符按键直接映射为标点符号或文字
  6. selector 选字处理器,处理数字选字键〔可以换成别的哦〕、上、下候选定位、换页
  7. navigator 处理输入栏内的光标移动
  8. express_editor 编辑器,处理空格、回车上屏、回退键
  9. fluid_editor 句式编辑器,用于以空格断词、回车上屏的【注音】、【语句流】等输入方案,替换express_editor
  10. chord_composer 和絃作曲家或曰并击处理器,用于【宫保拼音】等多键并击的输入方案
  11. lua_processor 使用lua自定义按键,后接@+lua函数名
  • lua函数名即用户文件夹内rime.lua中函数名,参数为(key, env)

二、segmentors

  • 这批组件识别不同内容类型,将输入码分段并加上tag
  1. ascii_segmentor 标识西文段落〔譬如在西文模式下〕字母直接上屛
  2. matcher 配合recognizer标识符合特定规则的段落,如网址、反查等,加上特定tag
  3. abc_segmentor 标识常规的文字段落,加上abc这个tag
  4. punct_segmentor 标识句读段落〔键入标点符号用〕加上punct这个tag
  5. fallback_segmentor 标识其他未标识段落
  6. affix_segmentor 用户自定义tag
  • 此项可加载多个实例,后接@+tag
  1. lua_segmentor 使用lua自定义切分,后接@+lua函数名

三、translators

  • 这批组件翻译特定类型的编码段为一组候选文字
  1. echo_translator 没有其他候选字时,回显输入码〔输入码可以Shift+Enter上屛〕
  2. punct_translator 配合punct_segmentor转换标点符号
  3. table_translator 码表翻译器,用于仓颉、五笔等基于码表的输入方案
    - 此项可加载多个实例,后接@+翻译器名〔如:cangjiewubi等〕7. script_translator 脚本翻译器,用于拼音、粤拼等基于音节表的输入方案
    - 此项可加载多个实例,后接@+翻译器名〔如:pinyinjyutping等〕11. reverse_lookup_translator 反查翻译器,用另一种编码方案查码
  4. lua_translator 使用lua自定义输入,例如动态输入当前日期、时间,后接@+lua函数名
  • lua函数名即用户文件夹内rime.lua中函数名,参数为(input, seg, env)
  • 可以env.engine.context:get_option("option_name")方式绑定到switch开关/key_binder快捷键

四、filters

  • 这批组件过滤翻译的结果
  1. uniquifier 过滤重复的候选字,有可能来自**simplifier**
  2. cjk_minifier 字符集过滤〔仅用于script_translator,使之支持extended_charset开关〕
  3. single_char_filter 单字过滤器,如加载此组件,则屛敝词典中的词组〔仅table_translator有效〕
  4. simplifier 用字转换
  5. reverse_lookup_filter 反查滤镜,以更灵活的方式反查,Rime1.0后替代_reverse_lookup_translator_
  • 此项可加载多个实例,后接@+滤镜名〔如:pinyin_lookupjyutping_lookup等〕
  1. charset_filter 字符集过滤
  • 后接@+字符集名〔如:utf-8(无过滤)、big5big5hkscsgbkgb2312
  1. lua_filter 使用lua自定义过滤,例如过滤字符集、调整排序,后接@+lua函数名
  • lua函数名即用户文件夹内rime.lua中函数名,参数为(input, env)
  • 可以env.engine.context:get_option("option_name")方式绑定到switch开关/key_binder快捷键

示例

cangjie6.schema.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
engine:
processors:
- ascii_composer
- recognizer
- key_binder
- speller
- punctuator
- selector
- navigator
- express_editor
segmentors:
- ascii_segmentor
- matcher
- affix_segmentor@pinyin
- affix_segmentor@jyutping
- affix_segmentor@pinyin_lookup
- affix_segmentor@jyutping_lookup
- affix_segmentor@reverse_lookup
- abc_segmentor
- punct_segmentor
- fallback_segmentor
translators:
- punct_translator
- table_translator
- script_translator@pinyin
- script_translator@jyutping
- script_translator@pinyin_lookup
- script_translator@jyutping_lookup
- lua_translator@get_date
filters:
- simplifier@zh_simp
- uniquifier
- cjk_minifier
- charset_filter@gbk
- reverse_lookup_filter@middle_chinese
- reverse_lookup_filter@pinyin_reverse_lookup
- reverse_lookup_filter@jyutping_reverse_lookup
- lua_filter@single_char_first

1.5 细项配置

引擎中所举之加粗者均可在下方详细描述,格式为:

1
2
name:
branches: configurations

1
2
3
name:
branches:
- configurations

一、speller

  1. alphabet: 定义本方案输入键
  2. initials: 定义仅作始码之键
  3. finals: 定义仅作末码之键
  4. delimiter: 上屛时的音节间分音符
  5. algebra: 拼写运算规则,由之算出的拼写汇入prism
  6. max_code_length: 形码最大码长,超过则顶字上屛〔number
  7. auto_select: 自动上屛〔truefalse
  8. auto_select_pattern: 自动上屏规则,以正则表达式描述,当输入串可以被匹配时自动顶字上屏。
  9. use_space: 以空格作输入码〔truefalse
  • speller的演算包含:
1
2
3
4
5
6
xform --改写〔不保留原形〕
derive --衍生〔保留原形〕
abbrev --简拼〔出字优先级较上两组更低〕
fuzz --畧拼〔此种简拼仅组词,不出单字〕
xlit --变换〔适合大量一对一变换〕
erase --删除
示例

luna_pinyin.schema.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
speller:
alphabet: zyxwvutsrqponmlkjihgfedcba
delimiter: " '"
algebra:
- erase/^xx$/
- abbrev/^([a-z]).+$/$1/
- abbrev/^([zcs]h).+$/$1/
- derive/^([nl])ve$/$1ue/
- derive/^([jqxy])u/$1v/
- derive/un$/uen/
- derive/ui$/uei/
- derive/iu$/iou/
- derive/([aeiou])ng$/$1gn/
- derive/([dtngkhrzcs])o(u|ng)$/$1o/
- derive/ong$/on/
- derive/ao$/oa/
- derive/([iu])a(o|ng?)$/a$1$2/

二、segmentor

  • segmentor配合recognizer标记出tag。这里会用到affix_segmentorabc_translator
  • tag用在translatorreverse_lookup_filtersimplifier中用以标定各自作用范围
  • 如果不需要用到extra_tags则不需要单独配置segmentor
  1. tag: 设置其tag
  2. prefix: 设置其前缀标识,可不塡,不塡则无前缀
  3. suffix: 设置其尾缀标识,可不塡,不塡则无尾缀
  4. tips: 设置其输入前提示符,可不塡,不塡则无提示符
  5. closing_tips: 设置其结束输入提示符,可不塡,不塡则无提示符
  6. extra_tags: 为此segmentor所标记的段落插上其它tag

affix_segmentortranslator重名时,两者可併在一处配置,此处1-5条对应下面19-23条。abc_segmentor仅可设extra_tags

示例

cangjie6.schema.yaml

1
2
3
4
5
6
7
8
9
reverse_lookup:
tag: reverse_lookup
prefix: "`"
suffix: ";"
tips: "【反查】"
closing_tips: "【苍颉】"
extra_tags:
- pinyin_lookup
- jyutping_lookup

三、translator

  • 每个方案有一个主translator,在引擎列表中不以@+翻译器名定义,在细项配置时直接以translator:命名。以下加粗项为可在主translator中定义之项,其它可在副〔以@+翻译器名命名〕translator中定义
  1. enable_charset_filter: 是否开启字符集过滤〔仅table_translator有效。启用cjk_minifier后可适用于script_translator
  2. enable_encoder: 是否开启自动造词〔仅table_translator有效〕
  3. encode_commit_history: 是否对已上屛词自动成词〔仅table_translator有效〕
  4. max_phrase_length: 最大自动成词词长〔仅table_translator有效〕
  5. enable_completion: 提前显示尚未输入完整码的字〔仅table_translator有效〕
  6. sentence_over_completion: 在无全码对应字而仅有逐键提示时也开启智能组句〔仅table_translator有效〕
  7. strict_spelling: 配合speller中的fuzz规则,仅以畧拼码组词〔仅table_translator有效〕
  8. disable_user_dict_for_patterns: 禁止某些编码录入用户词典
  9. enable_sentence: 是否开启自动造句
  10. enable_user_dict: 是否开启用户词典〔用户词典记录动态字词频、用户词〕
  • 以上选塡truefalse
  1. dictionary: 翻译器将调取此字典文件
  2. prism: 设置由此主翻译器的speller生成的棱镜文件名,或此副编译器调用的棱镜名
  3. user_dict: 设置用户词典名
  4. db_class: 设置用户词典类型,可设tabledb〔文本〕或userdb〔二进制〕
  5. preedit_format: 上屛码自定义
  6. comment_format: 提示码自定义
  7. spelling_hints: 设置多少字以内候选标注完整带调拼音〔仅script_translator有效〕
  8. initial_quality: 设置此翻译器出字优先级
  9. tag: 设置此翻译器针对的tag。可不塡,不塡则仅针对abc
  10. prefix: 设置此翻译器的前缀标识,可不塡,不塡则无前缀
  11. suffix: 设置此翻译器的尾缀标识,可不塡,不塡则无尾缀
  12. tips: 设置此翻译器的输入前提示符,可不塡,不塡则无提示符
  13. closing_tips: 设置此翻译器的结束输入提示符,可不塡,不塡则无提示符
  14. contextual_suggestions: 是否使用语言模型优化输出结果〔需配合grammar使用〕
  15. max_homophones: 最大同音簇长度〔需配合grammar使用〕
  16. max_homographs: 最大同形簇长度〔需配合grammar使用〕
示例

cangjie6.schema.yaml 苍颉主翻译器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
translator:
dictionary: cangjie6
enable_charset_filter: true
enable_sentence: true
enable_encoder: true
encode_commit_history: true
max_phrase_length: 5
preedit_format:
- xform/^([a-z ])$/$1|\U$1\E/
- xform/(?<=[a-z])\s(?=[a-z])//
- "xlit|ABCDEFGHIJKLMNOPQRSTUVWXYZ|日月金木水火土竹戈十大中一弓人心手口尸廿山女田止卜片|"
comment_format:
- "xlit|abcdefghijklmnopqrstuvwxyz~|日月金木水火土竹戈十大中一弓人心手口尸廿山女田止卜片・|"
disable_user_dict_for_patterns:
- "^z.$"
initial_quality: 0.75

cangjie6.schema.yaml 拼音副翻译器

1
2
3
4
5
6
7
8
9
10
11
12
pinyin:
tag: pinyin
dictionary: luna_pinyin
enable_charset_filter: true
prefix: 'P' #须配合recognizer
suffix: ';' #须配合recognizer
preedit_format:
- "xform/([nl])v/$1ü/"
- "xform/([nl])ue/$1üe/"
- "xform/([jqxy])v/$1u/"
tips: "【汉拼】"
closing_tips: "【苍颉】"

pinyin_simp.schema.yaml 拼音・简化字主翻译器

1
2
3
4
5
6
7
translator:
dictionary: luna_pinyin
prism: luna_pinyin_simp
preedit_format:
- xform/([nl])v/$1ü/
- xform/([nl])ue/$1üe/
- xform/([jqxy])v/$1u/

luna_pinyin.schema.yaml 朙月拼音用户短语

1
2
3
4
5
6
7
custom_phrase: #这是一个table_translator
dictionary: ""
user_dict: custom_phrase
db_class: tabledb
enable_sentence: false
enable_completion: false
initial_quality: 1

四、reverse_lookup_filter

  • 此滤镜须挂在translator上,不影响该translator工作
  1. tags: 设置其作用范围
  2. overwrite_comment: 是否覆盖其他提示
  3. dictionary: 反查所得提示码之码表
  4. comment_format: 自定义提示码格式
示例

cangjie6.schema.yaml

1
2
3
4
5
6
7
8
pinyin_reverse_lookup: #该反查滤镜名
tags: [ pinyin_lookup ] #挂在这个tag所对应的翻译器上
overwrite_comment: true
dictionary: cangjie6 #反查所得为苍颉码
comment_format:
- "xform/$/〕/"
- "xform/^/〔/"
- "xlit|abcdefghijklmnopqrstuvwxyz |日月金木水火土竹戈十大中一弓人心手口尸廿山女田止卜片、|"

五、simplifier

  1. option_name: 对应switches中设置的切换项名
  2. opencc_config: 用字转换配置文件
  • 位于:rime_dir/opencc/,自带之配置文件含:
  1. 繁转简〔默认〕:t2s.json

  2. 繁转台湾:t2tw.json

  3. 繁转香港:t2hk.json

  4. 简转繁:s2t.json

  5. tags: 设置转换范围

  6. tips: 设置是否提示转换前的字,可塡none〔或不塡〕、char〔仅对单字有效〕、all

  7. show_in_comment: 设置是否仅将转换结果显示在备注中

  8. excluded_types: 取消特定范围〔一般为_reverse_lookup_translator_〕转化用字

示例

修改自 luna_pinyin_kunki.schema

1
2
3
4
5
zh_tw:
option_name: zh_tw
opencc_config: t2tw.json
tags: [ abc ] #abc对应abc_segmentor
tips: none

六、chord_composer_

  • 并击把键盘分两半,相当于两块键盘。两边同时击键,系统默认在其中一半上按的键先于另一半,由此得出上屛码
  1. alphabet: 字母表,包含用于并击的按键。击键虽有先后,形成并击时,一律以字母表顺序排列
  2. algebra: 拼写运算规则,将一组并击编码转换为拼音音节
  3. output_format: 并击完成后套用的式样,追加隔音符号
  4. prompt_format: 并击过程中套用的式样,加方括弧
示例

combo_pinyin.schema.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
chord_composer:
# 字母表,包含用于并击的按键
# 击键虽有先后,形成并击时,一律以字母表顺序排列
alphabet: "swxdecfrvgtbnjum ki,lo."
# 拼写运算规则,将一组并击编码转换为拼音音节
algebra:
# 先将物理按键字符对应到宫保拼音键位中的拼音字母
- 'xlit|swxdecfrvgtbnjum ki,lo.|sczhlfgdbktpRiuVaNIUeoE|'
# 以下根据宫保拼音的键位分别变换声母、韵母部分
# 组合声母
- xform/^zf/zh/
- xform/^cl/ch/
- xform/^fb/m/
- xform/^ld/n/
- xform/^hg/r/
……
# 声母独用时补足隠含的韵母
- xform/^([bpf])$/$1u/
- xform/^([mdtnlgkh])$/$1e/
- xform/^([mdtnlgkh])$/$1e/
- xform/^([zcsr]h?)$/$1i/
# 并击完成后套用的式样,追加隔音符号
output_format:
- "xform/^([a-z]+)$/$1'/"
# 并击过程中套用的式样,加方括弧
prompt_format:
- "xform/^(.*)$/[$1]/"

七、lua

  1. lua_translator
  2. lua_filter
  3. lua_processor
  4. lua_segmentor
示例

rime.lua

1
2
3
4
5
6
7
8
function get_date(input, seg, env)
--- 以 show_date 为开关名或 key_binder 中 toggle 的对象
on = env.engine.context:get_option("show_date")
if (on and input == "date") then
--- Candidate(type, start, end, text, comment)
yield(Candidate("date", seg.start, seg._end, os.date("%Y年%m月%d日"), " 日期"))
end
end

八、其它

  • 包括recognizerkey_binderpunctuator标点快捷键二三选重特殊字符等均于此设置
  1. import_preset: 由外部统一文件导入

  2. grammar: 下设:

    • language: 取值zh-han[ts]-t-essay-bg[wc]
    • collocation_max_length: 最大搭配长度(整句输入可忽畧此项)
    • collocation_min_length: 最小搭配长度(整句输入可忽畧此项)
  3. recognizer: 下设patterns: 配合segmentorprefixsuffix完成段落划分、tag分配

    • 前字段可以为以affix_segmentor@someTag定义的Tag名,或者punctreverse_lookup两个内设的字段。其它字段不调用输入法引擎,输入即输出〔如url等字段〕
  4. key_binder: 下设bindings: 设置功能性快捷键

    • 每一条binding可能包含:accept实际所按之键、send输出效果、toggle切换开关和when作用范围〔sendtoggle二选一〕

    • toggle可用字段包含各开关名

    • when可用字段包含:

    1
    2
    3
    4
    paging	翻䈎用
    has_menu 操作候选项用
    composing 操作输入码用
    always 全域
    • acceptsend可用字段除A-Za-z0-9外,还包含以下键板上实际有的键:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    BackSpace	退格
    Tab 水平定位符
    Linefeed 换行
    Clear 清除
    Return 回车
    Pause 暂停
    Sys_Req 印屏
    Escape 退出
    Delete 删除
    Home 原位
    Left 左箭头
    Up 上箭头
    Right 右箭头
    Down 下箭头
    Prior、Page_Up 上翻
    Next、Page_Down 下翻
    End 末位
    Begin 始位
    Shift_L 左Shift
    Shift_R 右Shift
    Control_L 左Ctrl
    Control_R 右Ctrl
    Meta_L 左Meta
    Meta_R 右Meta
    Alt_L 左Alt
    Alt_R 右Alt
    Super_L 左Super
    Super_R 右Super
    Hyper_L 左Hyper
    Hyper_R 右Hyper
    Caps_Lock 大写锁
    Shift_Lock 上档锁
    Scroll_Lock 滚动锁
    Num_Lock 小键板锁
    Select 选定
    Print 打印
    Execute 执行
    Insert 插入
    Undo 还原
    Redo 重做
    Menu 菜单
    Find 蒐寻
    Cancel 取消
    Help 帮助
    Break 中断
    space
    exclam !
    quotedbl "
    numbersign #
    dollar $
    percent %
    ampersand &
    apostrophe '
    parenleft (
    parenright )
    asterisk *
    plus +
    comma ,
    minus -
    period .
    slash /
    colon :
    semicolon ;
    less <
    equal =
    greater >
    question ?
    at @
    bracketleft [
    backslash
    bracketright ]
    asciicircum ^
    underscore _
    grave `
    braceleft {
    bar |
    braceright }
    asciitilde ~
    KP_Space 小键板空格
    KP_Tab 小键板水平定位符
    KP_Enter 小键板回车
    KP_Delete 小键板删除
    KP_Home 小键板原位
    KP_Left 小键板左箭头
    KP_Up 小键板上箭头
    KP_Right 小键板右箭头
    KP_Down 小键板下箭头
    KP_Prior、KP_Page_Up 小键板上翻
    KP_Next、KP_Page_Down 小键板下翻
    KP_End 小键板末位
    KP_Begin 小键板始位
    KP_Insert 小键板插入
    KP_Equal 小键板等于
    KP_Multiply 小键板乘号
    KP_Add 小键板加号
    KP_Subtract 小键板减号
    KP_Divide 小键板除号
    KP_Decimal 小键板小数点
    KP_0 小键板0
    KP_1 小键板1
    KP_2 小键板2
    KP_3 小键板3
    KP_4 小键板4
    KP_5 小键板5
    KP_6 小键板6
    KP_7 小键板7
    KP_8 小键板8
    KP_9 小键板9
  5. editor用以订制操作键〔不支持import_preset:〕,键板键名同key_binder/bindings中的acceptsend,效果定义如下:

1
2
3
4
5
6
7
8
9
10
11
12
confirm	上屏候选项
commit_comment 上屏候选项备注
commit_raw_input 上屏原始输入
commit_script_text 上屏变换后输入
commit_composition 语句流单字上屏
revert 撤消上次输入
back 按字符回退
back_syllable 按音节回退
delete_candidate 删除候选项
delete 向后删除
cancel 取消输入
noop 空
  1. punctuator: 下设full_shape:half_shape:分别控制全角模式下的符号和半角模式下的符号,另有use_space:空格顶字〔truefalse
    • 每条标点项可加commit直接上屏和pair交替上屏两种模式,默认为选单模式
示例

修改自 cangjie6.schema.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
key_binder:
import_preset: default
bindings:
- {accept: semicolon, send: 2, when: has_menu} #分号选第二重码
- {accept: apostrophe, send: 3, when: has_menu} #引号选第三重码
- {accept: "Control+1", select: .next, when: always}
- {accept: "Control+2", toggle: full_shape, when: always}
- {accept: "Control+3", toggle: simplification, when: always}
- {accept: "Control+4", toggle: extended_charset, when: always}
editor:
bindings:
Return: commit_comment
punctuator:
import_preset: symbols
half_shape:
"'": {pair: ["「", "」"]} #第一次按是「,第二次是」
"(": ["〔", "["] #弹出选单
.: {commit: "。"} #无选单,直接上屛。优先级最高

1.6 其它

  • Rime还为每个方案提供选单和一定的外观订制能力
  • 通常情况下menudefault.yaml中定义〔或用户修改档default.custom.yaml〕,stylesquirrel.yamlweasel.yaml〔或用户修改档squirrel.custom.yamlweasel.custom.yaml

示例

1
2
3
4
menu:
alternative_select_labels: [ ①, ②, ③, ④, ⑤, ⑥, ⑦, ⑧, ⑨ ] # 修改候选标籤
alternative_select_keys: ASDFGHJKL #如编码字符占用数字键则须另设选字键
page_size: 5 #选单每䈎显示个数

Dict.yaml 详解

开始之前

1
2
3
# Rime dict
# encoding: utf-8
〔你还可以在这注释字典来源、变动记录等〕

描述档

  1. name: 内部字典名,也即schema所引用的字典名,确保与文件名相一致
  2. version: 如果发布,请确保每次改动陞版本号

示例

1
2
name: "cangjie6.extended"
version: "0.1"

配置

  1. sort: 字典初始排序,可选originalby_weight

  2. use_preset_vocabulary: 是否引入「八股文」〔含字词频、词库〕

  3. max_phrase_length: 配合use_preset_vocabulary:,设置导入词条最大词长

  4. min_phrase_weight: 配合use_preset_vocabulary:,设置导入词条最小词频

  5. columns: 定义码表以Tab分隔出的各列,可设text【文本】、code【码】、weight【权重】、stem【造词码】

  6. import_tables: 加载其它外部码表

  7. encoder: 形码造词规则

  8. exclude_patterns:

  9. rules: 可用length_equal:length_in_range:定义。大写字母表示字序,小写字母表示其所跟随的大写字母所以表的字中的编码序

  10. tail_anchor: 造词码包含结构分割符〔仅用于仓颉〕

  11. exclude_patterns 取消某编码的造词资格

示例

cangjie6.extended.dict.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sort: by_weight
use_preset_vocabulary: false
import_tables:
- cangjie6 #单字码表由cangjie6.dict.yaml导入
columns: #此字典为纯词典,无单字编码,仅有字和词频
- text #字/词
- weight #字/词频
encoder:
exclude_patterns:
- '^z.*$'
rules:
- length_equal: 2 #对于二字词
formula: "AaAzBaBbBz" #取第一字首尾码、第二字首次尾码
- length_equal: 3 #对于三字词
formula: "AaAzBaYzZz" #取第一字首尾码、第二字首尾码、第三后缀码
- length_in_range: [4, 5] #对于四至五字词
formula: "AaBzCaYzZz" #取第一字首码,第二后缀码、第三字首码、倒数第二后缀码、最后一后缀码
tail_anchor: "'"

码表

  • Tab分隔各列,各列依columns:定义排列。

示例

cangjie6.dict.yaml

1
2
3
4
5
columns:
- text #第一列字/词
- code #第二列码
- weight #第三列字/词频
- stem #第四列造词码

cangjie6.dict.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
个	owjr	246268	ow'jr
看 hqbu 245668
中 l 243881
呢 rsp 242970
来 doo 235101
吗 rsqf 221092
为 bhnf 211340
会 owfa 209844
她 vpd 204725
与 xyc 203975
给 vfor 193007
等 hgdi 183340
这 yymr 181787
用 bq 168934 b'q