359 lines
16 KiB
YAML
359 lines
16 KiB
YAML
# Rime schema
|
||
# encoding: utf-8
|
||
|
||
# 复制自 rime_ice.schema.yaml ,适配了双拼。
|
||
# 双拼键位映射复制自 https://github.com/rime/rime-double-pinyin
|
||
# 双拼之间主要就是 speller/algebra 和 translator/preedit_format 这里有区别。
|
||
#
|
||
# 全拼的自定义文本和双拼有些冲突,改成了 custom_phrase_double ,需要创建 custom_phrase_double.txt 文件。
|
||
#
|
||
# 目前配置中有个别功能仍然是全拼拼写,不能自动适配,所以需要手动修改一下:
|
||
# 1. 中英混输词库的拼写: 在英文词库文件 melt_eng.dict.yaml 修改为对应的双拼词库
|
||
# 2. 英文中部分符号的派生规则:在英文方案文件 melt_eng.schema.yaml > speller > algebra 修改为对应的双拼拼写运算
|
||
# 3. 部件拆字的拼写规则: 在部件拆字方案 radical_pinyin.schema.yaml > speller > algebra 修改为对应的双拼拼写运算
|
||
# 打个补丁一劳永逸,补丁写法参考 [常见问题](https://github.com/iDvel/rime-ice/issues/133)
|
||
|
||
|
||
# 方案说明
|
||
schema:
|
||
schema_id: double_pinyin_mspy
|
||
name: 微软双拼
|
||
version: "1"
|
||
author:
|
||
- Dvel
|
||
description: |
|
||
雾凇拼音 - 微软双拼
|
||
https://github.com/iDvel/rime-ice
|
||
dependencies:
|
||
- melt_eng # 英文输入,作为次翻译器挂载到拼音方案
|
||
- radical_pinyin # 部件拆字,反查及辅码
|
||
|
||
|
||
# 开关
|
||
# states: 方案选单显示的名称。可以注释掉,仍可以通过快捷键切换。
|
||
# reset: 默认状态。注释掉后,切换窗口时不会重置到默认状态。
|
||
switches:
|
||
- name: ascii_mode
|
||
states: [ 中, A ]
|
||
- name: ascii_punct # 中英标点
|
||
states: [ ¥, $ ]
|
||
- name: traditionalization
|
||
states: [ 简, 繁 ]
|
||
- name: emoji
|
||
states: [ 💀, 😄 ]
|
||
reset: 1
|
||
- name: full_shape
|
||
states: [ 半角, 全角 ]
|
||
- name: single_char # search.lua 的功能开关,辅码查词时是否单字优先
|
||
abbrev: [词, 单]
|
||
states: [正常, 单字]
|
||
|
||
|
||
# 输入引擎
|
||
engine:
|
||
processors:
|
||
- lua_processor@select_character # 以词定字
|
||
- lua_processor@auto_commit_single_punct # 让写在 alphabet 中的某标点自动上屏
|
||
- ascii_composer
|
||
- recognizer
|
||
- key_binder
|
||
- speller
|
||
- punctuator
|
||
- selector
|
||
- navigator
|
||
- express_editor
|
||
segmentors:
|
||
- ascii_segmentor
|
||
- matcher
|
||
- abc_segmentor
|
||
- affix_segmentor@radical_lookup # 部件拆字自定义 tag
|
||
- punct_segmentor
|
||
- fallback_segmentor
|
||
translators:
|
||
- punct_translator
|
||
- script_translator
|
||
- lua_translator@date_translator # 时间、日期、星期
|
||
- lua_translator@lunar # 农历
|
||
- table_translator@custom_phrase # 自定义短语 custom_phrase_double.txt
|
||
- table_translator@melt_eng # 英文输入
|
||
- table_translator@radical_lookup # 部件拆字反查
|
||
- lua_translator@unicode # Unicode
|
||
- lua_translator@number_translator # 数字、金额大写
|
||
filters:
|
||
- lua_filter@corrector # 错音错字提示
|
||
- simplifier@emoji # Emoji
|
||
- simplifier@traditionalize # 简繁切换
|
||
- reverse_lookup_filter@radical_reverse_lookup # 部件拆字滤镜
|
||
- lua_filter@search@radical_pinyin # 部件拆字辅码
|
||
- lua_filter@autocap_filter # 英文自动大写
|
||
- lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置
|
||
- lua_filter@pin_cand_filter # 置顶候选项
|
||
- uniquifier # 去重
|
||
|
||
|
||
# Lua 配置: 日期、时间、星期、ISO 8601、时间戳的触发关键字
|
||
date_translator:
|
||
date: date # 日期: 2022-11-29
|
||
time: time # 时间: 18:13
|
||
week: week # 星期: 星期二
|
||
datetime: datetime # ISO 8601: 2022-11-29T18:13:11+08:00
|
||
timestamp: timestamp # 时间戳: 1669716794
|
||
|
||
|
||
# Lua 配置:农历的触发关键字
|
||
lunar: lunar # 农历: 二〇二三年冬月二十 癸卯年(兔)冬月二十
|
||
|
||
|
||
# Lua 配置:直接上屏单个字符
|
||
# lua_filter@search@radical_pinyin 辅码的引导符在 key_binder/search 定义,目前为 `(反引号)。
|
||
# ` 只在中间时起辅码查询作用,但是输入单个 ` 时仍然需要按空格选择,这个 Lua 让单个的 ` 直接上屏。
|
||
auto_commit_single_punct: "`"
|
||
|
||
|
||
# Lua 配置:为 corrector 格式化 comment,占位符为 {comment}
|
||
# 默认 "{comment}" 输入 hun dun 时会在「馄饨」旁边生成 hún tun 的 comment
|
||
# 例如左右加个括号 "({comment})" 就会变成 (hún tun)
|
||
corrector: "{comment}"
|
||
|
||
|
||
# Lua 配置: 降低部分英语单词在候选项的位置。
|
||
# 详细介绍 https://dvel.me/posts/make-rime-en-better/#短单词置顶的问题
|
||
# 正常情况: 输入 rug 得到 「1.rug 2.如果 …… 」
|
||
# 降低之后: 输入 rug 得到 「1.如果 2.rug …… 」
|
||
# 几种模式:
|
||
# all 降低脚本内置的单词(所有 3~4 位长度、前 2~3 位是完整拼音、最后一位是声母),words 作为自定义的额外补充
|
||
# custom 完全自定义,只降低 words 里的
|
||
# none 不降低任何单词,相当于没有启用这个 Lua
|
||
# (匹配的是编码,不是单词)
|
||
reduce_english_filter:
|
||
mode: custom # all | custom | none
|
||
idx: 2 # 降低到第 idx 个位置
|
||
# 自定义的单词列表,示例列表没有降低部分常用单词,如 and cat mail Mac but bad shit ……
|
||
words: [aid, ann,
|
||
bail, bait, bam, band, bans, bat, bay, bend, bent, benz, bib, bid, bien, biz, boc, bop, bos, bud, buf,
|
||
cab, cad, cain, cam, cans, cap, cas, cef, chad, chan, chap, chef, cher, chew, chic, chin, chip, chit, coup, cum, cunt, cur,
|
||
dab, dag, dal, dam, dent, dew, dial, diet, dim, din, dip, dis, dit, doug, dub, dug, dunn,
|
||
fab, fax, fob, fog, foul, fur,
|
||
gag, gail, gain, gal, gam, gaol, ged, gel, ger, guam, gus, gut,
|
||
hail, ham, hank, hans, hat, hay, heil, heir, hem, hep, hud, hum, hung, hunk, hut,
|
||
jim, jug,
|
||
kat,
|
||
lab, lad, lag, laid, lam, laos, lap, lat, lax, lay, led, leg, lex, liam, lib, lid, lied, lien, lies, linn, lip, lit, liz, lob, lug, lund, lung, lux,
|
||
mag, maid, mann, mar, mat, med, mel, mend, mens, ment, mil, mins, mint, mob, moc, mod, mop, mos, mot, mud, mug, mum, nail,
|
||
nap, nat, nay, neil, nib, nip, noun, nous, nun, nut,
|
||
pac, paid, pail, pain, pair, pak, pal, pam, pans, pant, pap, par, pat, paw, pax, pens, pic, pier, pies, pins, pint, pit, pix, pod, pop, pos, pot, pour, pow, pub,
|
||
rand, rant, rent, rep, res, ret, rex, rib, rid, rig, rim, rub, rug, rum, runc, runs,
|
||
sac, sail, sal, sam, sans, sap, saw, sax, sew, sham, shaw, shin, sig, sin, sip, sis, suit, sung, suns, sup, sur, sus,
|
||
tad, tail, taj, tar, tax, tec, ted, tel, ter, tex, tic, tied, tier, ties, tim, tin, tit, tour, tout, tum,
|
||
wag, wand, womens, wap, wax, weir, won,
|
||
yan, yen]
|
||
|
||
|
||
# Lua 配置: 置顶候选项
|
||
# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。
|
||
# (对简繁转换无效,除非简繁文字一致 😰)
|
||
#
|
||
# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。
|
||
# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü
|
||
# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰
|
||
#
|
||
# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh,
|
||
# 如 'ni hao' 会自动生成 'ni hao'、'ni h'
|
||
# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch'
|
||
# 如果同时写了 da zhuan 和 da zhong,输入 da z 时,排在前面的的优先,除非明确指定 'da z'。
|
||
pin_cand_filter:
|
||
# 格式:编码<Tab>字词1<Space>字词2……
|
||
# 示例:
|
||
# - 'le 了' # 输入 le 时,置顶「了」
|
||
# - 'la 啦' # 输入 la 时,置顶「啦」
|
||
# - 'ta 他 她 它' # 可以置顶多个字,按顺序排列
|
||
# - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。
|
||
# - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」
|
||
# - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格
|
||
# - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格
|
||
# - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置
|
||
# # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面
|
||
# - da zhuang 大专
|
||
# - da zhong 大众
|
||
# # 如果明确定义了简码形式,则完全使用简码形式
|
||
# - da z 打字
|
||
# - da zh 打仗
|
||
# # ⚠️ 双拼
|
||
# - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼
|
||
# - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的)
|
||
# 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台,don't know why ...
|
||
- d 的
|
||
|
||
|
||
# 主翻译器,拼音
|
||
translator:
|
||
dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml
|
||
prism: double_pinyin_mspy # 多方案共用一个词库时,为避免冲突,需要用 prism 指定一个名字。
|
||
spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中
|
||
always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。
|
||
initial_quality: 1.2 # 拼音的权重应该比英文大
|
||
preedit_format: # preedit_format 影响到输入框的显示和“Shift+回车”上屏的字符
|
||
- xform/([aoe])(\w)/0$2/
|
||
- xform/([bpmnljqxy])n/$1in/
|
||
- xform/(\w)g/$1eng/
|
||
- xform/(\w)q/$1iu/
|
||
- xform/([gkhvuirzcs])w/$1ua/
|
||
- xform/(\w)w/$1ia/
|
||
- xform/([dtnlgkhjqxyvuirzcs])r/$1uan/
|
||
- xform/0r/er/
|
||
- xform/([dtgkhvuirzcs])v/$1ui/
|
||
- xform/(\w)v/$1ve/
|
||
- xform/(\w)t/$1ve/
|
||
- xform/([gkhvuirzcs])y/$1uai/
|
||
- xform/(\w)y/$1v/
|
||
- xform/([dtnlgkhvuirzcs])o/$1uo/
|
||
- xform/(\w)p/$1un/
|
||
- xform/([jqx])s/$1iong/
|
||
- xform/(\w)s/$1ong/
|
||
- xform/([jqxnl])d/$1iang/
|
||
- xform/(\w)d/$1uang/
|
||
- xform/(\w)f/$1en/
|
||
- xform/(\w)h/$1ang/
|
||
- xform/(\w)j/$1an/
|
||
- xform/(\w)k/$1ao/
|
||
- xform/(\w)l/$1ai/
|
||
- xform/(\w)z/$1ei/
|
||
- xform/(\w)x/$1ie/
|
||
- xform/(\w)c/$1iao/
|
||
- xform/(\w)b/$1ou/
|
||
- xform/(\w)m/$1ian/
|
||
- xform/(\w);/$1ing/
|
||
- xform/0(\w)/$1/
|
||
- "xform/(^|[ '])v/$1zh/"
|
||
- "xform/(^|[ '])i/$1ch/"
|
||
- "xform/(^|[ '])u/$1sh/"
|
||
- xform/([jqxy])v/$1u/
|
||
- xform/([nl])v/$1ü/
|
||
|
||
|
||
# 次翻译器,英文
|
||
melt_eng:
|
||
dictionary: melt_eng # 挂载词库 melt_eng.dict.yaml
|
||
enable_sentence: false # 禁止造句
|
||
enable_user_dict: false # 禁用用户词典
|
||
initial_quality: 1.1 # 初始权重
|
||
comment_format: # 自定义提示码
|
||
- xform/.*// # 清空提示码
|
||
|
||
|
||
# 自定义短语
|
||
custom_phrase:
|
||
dictionary: ""
|
||
user_dict: custom_phrase_double # 需要手动创建 custom_phrase_double.txt 文件
|
||
db_class: stabledb
|
||
enable_completion: false # 补全提示
|
||
enable_sentence: false # 禁止造句
|
||
initial_quality: 99 # custom_phrase 的权重应该比 pinyin 和 melt_eng 大
|
||
|
||
|
||
# Emoji
|
||
emoji:
|
||
option_name: emoji
|
||
opencc_config: emoji.json
|
||
inherit_comment: false # 在 corrector.lua 及反查中,emoji 返回空注释
|
||
|
||
|
||
# 简繁切换
|
||
traditionalize:
|
||
option_name: traditionalization
|
||
opencc_config: s2t.json # s2t.json | s2hk.json | s2tw.json | s2twp.json
|
||
tips: none # 转换提示: all 都显示 | char 仅单字显示 | none 不显示。
|
||
tags: [ abc, number, gregorian_to_lunar ] # 限制在对应 tag,不对其他如反查的内容做简繁转换
|
||
|
||
|
||
# 标点符号
|
||
# punctuator 下面有三个子项:
|
||
# full_shape 全角标点映射
|
||
# half_shape 半角标点映射
|
||
# symbols Rime 的预设配置是以 '/' 前缀开头输出一系列字符,自定义的 symbols_caps_v.yaml 修改成了 'V' 开头。
|
||
punctuator:
|
||
full_shape:
|
||
__include: default:/punctuator/full_shape # 从 default.yaml 导入配置
|
||
half_shape:
|
||
__include: default:/punctuator/half_shape # 从 default.yaml 导入配置
|
||
symbols:
|
||
__include: symbols_caps_v:/symbols # 从 symbols_caps_v.yaml 导入配置
|
||
|
||
|
||
# 部件拆字反查
|
||
radical_lookup:
|
||
tag: radical_lookup
|
||
dictionary: radical_pinyin
|
||
enable_user_dict: false
|
||
prefix: "uU" # 反查前缀(反查时前缀会消失影响打英文所以设定为两个字母,或可改成一个非字母符号),与 recognizer/patterns/radical_lookup 匹配
|
||
tips: " 〔拆字〕"
|
||
comment_format:
|
||
- erase/^.*$//
|
||
# 部件拆字滤镜
|
||
radical_reverse_lookup:
|
||
tags: [ radical_lookup ]
|
||
dictionary: rime_ice # 拼音标注来源,可将 other/single_pinyin.reverse.bin 拷贝至 build/ 目录,此处改为 single_pinyin 来为所有字显示拼音
|
||
# comment_format: # 自定义 comment,例如在左右加上括号
|
||
# - xform/^/(/
|
||
# - xform/$/)/
|
||
|
||
|
||
# 处理符合特定规则的输入码,如网址、反查
|
||
|
||
recognizer:
|
||
import_preset: default # 从 default.yaml 继承通用的
|
||
patterns: # 再增加方案专有的:
|
||
punct: "^V([0-9]|10|[A-Za-z]+)$" # 响应 symbols_caps_v.yaml 的 symbols
|
||
radical_lookup: "^uU[a-z;]+$" # 响应部件拆字的反查,与 radical_lookup/prefix 匹配
|
||
unicode: "^U[a-f0-9]+" # 脚本将自动获取第 2 个字符 U 作为触发前缀,响应 lua_translator@unicode,输出 Unicode 字符
|
||
number: "^R[0-9]+[.]?[0-9]*" # 脚本将自动获取第 2 个字符 R 作为触发前缀,响应 lua_translator@number_translator,数字金额大写
|
||
gregorian_to_lunar: "^N[0-9]{1,8}" # 脚本将自动获取第 2 个字符 N 作为触发前缀,响应 lua_translator@lunar,公历转农历,输入 N20240115 得到「二〇二三年腊月初五」
|
||
|
||
|
||
# 从 default 继承快捷键
|
||
key_binder:
|
||
import_preset: default # 从 default.yaml 继承通用的
|
||
search: "`" # 辅码引导符,要添加到 speller/alphabet
|
||
# bindings: # 也可以再增加方案专有的
|
||
|
||
|
||
# 拼写设定
|
||
speller:
|
||
# 如果不想让什么标点直接上屏,可以加在 alphabet,或者编辑标点符号为两个及以上的映射
|
||
alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA;`
|
||
delimiter: " '" # 第一位<空格>是拼音之间的分隔符;第二位<'>表示可以手动输入单引号来分割拼音。
|
||
algebra:
|
||
- erase/^xx$/
|
||
- derive/^([jqxy])u$/$1v/
|
||
- derive/^([aoe].*)$/o$1/
|
||
- xform/^([ae])(.*)$/$1$1$2/
|
||
- xform/iu$/Ⓠ/
|
||
- xform/[iu]a$/Ⓦ/
|
||
- xform/er$|[uv]an$/Ⓡ/
|
||
- xform/[uv]e$/Ⓣ/
|
||
- xform/v$|uai$/Ⓨ/
|
||
- xform/^sh/Ⓤ/
|
||
- xform/^ch/Ⓘ/
|
||
- xform/^zh/Ⓥ/
|
||
- xform/uo$/Ⓞ/
|
||
- xform/[uv]n$/Ⓟ/
|
||
- xform/(.)i?ong$/$1Ⓢ/
|
||
- xform/[iu]ang$/Ⓓ/
|
||
- xform/(.)en$/$1Ⓕ/
|
||
- xform/(.)eng$/$1Ⓖ/
|
||
- xform/(.)ang$/$1Ⓗ/
|
||
- xform/ian$/Ⓜ/
|
||
- xform/(.)an$/$1Ⓙ/
|
||
- xform/iao$/Ⓒ/
|
||
- xform/(.)ao$/$1Ⓚ/
|
||
- xform/(.)ai$/$1Ⓛ/
|
||
- xform/(.)ei$/$1Ⓩ/
|
||
- xform/ie$/Ⓧ/
|
||
- xform/ui$/Ⓥ/
|
||
- derive/Ⓣ$/Ⓥ/
|
||
- xform/(.)ou$/$1Ⓑ/
|
||
- xform/in$/Ⓝ/
|
||
- xform/ing$/;/
|
||
- xlit/ⓆⓌⓇⓉⓎⓊⒾⓄⓅⓈⒹⒻⒼⒽⓂⒿⒸⓀⓁⓏⓍⓋⒷⓃ/qwrtyuiopsdfghmjcklzxvbn/
|
||
# - abbrev/^(.).+$/$1/ # 首字母简拼,开启后会导致 3 个字母时 kj'x 变成 k'jx 的问题
|