顶功编码
音节码固态词典
下面的描述中,「全码」表示按照规则来编码得到的全部输入码,而「简码」表示输入全码的前几个字母即可的部分字词。下标 ₁、₂、₃、₄ 分别表示词语的第一、二、三和最后一个字。
- 单音节词:全码为「声₁韵₁调₁」,简码为前 1 码或前 2 码;
- 双音节词:全码为「声₁韵₁声₂韵₂调₂调₁」,简码为前 4 码或前 5 码;
- 三音节词:全码为「声₁声₂声₃调₃调₁调₂」,简码为前 3、4 或 5 码;
- 四音节及更多音节词:全码为「声₁声₂声₃声₄调₄调₁」,简码为前 4 码或前 5 码。
本方案的编码具有一定的顶功特性。除单音节词在 1 码和 2 码时,以及三音节词在 3 码时是不可以顶的、需要空格上屏外,其余均可以由后续编码顶上屏幕。
首选后置
在逐码输入的过程中,如果一个字词已经在首选出现过,那么在后续输入中它将不再位于首选,这可以充分利用编码空间,并且降低重码。例如,「冰雪」这个词打到这一码时成为首选:
- _.冰雪
- 2.白沟泄洪
- 3.包裹性好
- 8.不够喜欢
- 9.不过幸好
- 0.包裹性和支撑性
那么它下一码时就不会是首选:
- _.包裹性好
- 2.冰雪
- 3.不过幸好
- 8.并
- 9.病
- 0.冰
音节码用户词典
动态调频与动态码长
音节码用户词典存储在 snow_pinyin.userdb 文件夹中、并同步到 snow_pinyin.userdb.txt 中;用户可以利用 Rime 的同步机制来在多个设备之间同步方案码用户词典。
本方案采用动态调频策略,用户打过的词会出现在候选中更靠前的位置。由于可以通过追加编码来进一步区分词语,动态调频使得一个词的码长在输入中会发生动态变化,这个特性称为动态码长。例如,用户第一次想打「史诗」时,输入较多码时它才出现在首选。
- _.事实
- 2.实施
- 3.试试
- 8.实时
- 9.适时
- 0.时时
- _.史诗
- 2.屎
- 3.使
- 8.史
- 9.始
- 0.矢
但输入过一次之后,下一次只需要较少码就能输入该词:
- _.史诗
- 2.事实
- 3.实施
- 8.试试
- 9.实时
- 0.适时
自动造词
缓冲造词的方法为:在没有输入编码的情况下,按 Control+j 进入造词模式,然后将想造词的内容拆分成较小的单位来完成输入,此时输入的内容会积累在缓冲区中而不上屏。输入完想造词的内容后,再按一次空格,此时缓冲区中的内容上屏,同时也完成了造词。
下面以造「冰雪输入法」这个词为例:首先按 Control+j,此时会提示「造词」(取决于前端的实现,也可能不会有提示),然后分别输入「冰雪」和「输入法」(此时的输入逻辑与平时相同,顶功的功能也有效,因此后一个词会将首选「冰雪」顶上屏),如下图所示:
- _.输入法[630: eou]
- 2.受让方
- 3.双人房
- 8.收入者
- 9.杀人犯
- 0.杀人者
然后确认「输入法」,这样想要造词的内容就全部进入了缓冲区:
再按一次空格,「冰雪输入法」上屏,同时也完成了造词。下次使用正常规则输入该词即可:
- _.冰雪输入法
这种造词方式非常灵活,可以以任意方式拆分任意次来输入。
值得注意的是,由于软件实现上的限制,本方案只支持缓冲造词这一种方式,不支持选择造词、定位造词等等。未来这一限制有可能会改善。
英数混输造词
在科技与流行文化中,经常出现混有英文、数字的词语的情况。为了让这些词也能够自动造词,本方案给 10 个阿拉伯数字、26 个大写英文字母、26 个小写英文字母也指定了相应的音节码。其规则为:
- 阿拉伯数字与相应中文数字(零~九)相同
- 英文字母的音节码规定为
- bpmfdtnlgkhjqxzcsrywe 加后缀
ea,例如 b 的音节码是bea - viuoa 的音节码是
x加上对应的韵母再加轻声a:i →xka, u →xja, o →xla, a →xsa, 而v因为已经被占用规定为xha - 所有大写字母固定在三码的首选,所有小写字母固定在三码的次选
- bpmfdtnlgkhjqxzcsrywe 加后缀
使用这些音节码打出相应的数字和字母,就可以轻易造出如「5G通信」「哆啦A梦」这样的词:
- _.5G通信
- 2.朝贡体系
- 3.传给他啊
- 8.网格体系
- 9.无感通行
- 0.五个体系
- _.哆啦A梦
- 2.多线
- 3.多嫌
- 8.电力项目
- 9.道路相目
- 0.丢了性命
方案码固态词典
一般情况下,输入各种编码时候选的排序会随着用户的使用逐渐调整,以贴合用户的使用习惯。但是,如果高频词的排序常常变动,则难以熟练掌握。因此,本方案精心设计了一些固定候选词,这些词在输入对应编码时的位置是固定的,不会随着用户的使用而变化。
这些方案固定词都定义在 snow_sanpin.fixed.txt 中。不过,如果您希望调整这些固顶词,不推荐直接修改这个文本,因为如果您未来更新冰雪拼音时覆盖安装,则会使得您的修改丢失。推荐的修改方法请参考下面的「方案码用户词典」一节。
在本方案中,单音节词的一码、二码为固定内容。
此外,为提高输入速度,本方案在方案码固态词典中仿照冰雪键道加入了用两键或三键即可输入的多音节词。这些多音节词的规则为:
- 两键:「声₁调₂」,
- 三键:二字词「声₁调₂调₁」,多字词「声₁调₂调₃」
这些简码属于非常规简码,需要特殊记忆。这些编码均可以顶功。
方案码用户词典
用户可以利用方案码用户词典来对方案码固态词典中的条目进一步自定义。与音节码用户词典不同的是,方案码用户词典存储在 snow_sanpin.userdb 文件夹中、并同步到 snow_sanpin.userdb.txt 中。用户同样可以利用 Rime 的同步机制来在多个设备之间同步方案码用户词典。其操作方式如下:
固定和取消固定
在有编码且选中了一个未固定的词时,Control+; 可以固定该候选至当前位置。例如,当前第一候选词为「编码」时,按下 Control+;,该词出现「📌」标志,表示已经固定到第一位:
- _.编码📌
- 2.便骂
- 3.避免磨损
- 8.表面磨损
- 9.吡美莫司
- 0.变
在有编码且选中了一个已固定的词时,Control+; 可以取消固定该候选。例如,当前第一候选词为「因此」且被固定时,
- _.因此📌
- 2.印次
- 3.淫词
- 8.一般参考
- 9.一般存款
- 0.一般存款账户
按下 Control+;,该词「📌」标志消失,表示不再被固定到第一位:
- _.因此
- 2.印次
- 3.淫词
- 8.一般参考
- 9.一般存款
- 0.一般存款账户
自由加词
在有编码时,按下 Control+' 之后候选框消失,以任意方式输入想加的词,再按一下 Control+' 即将词加到该编码第一个可用的候选位置上。例如,输入 kfc → Control+' → 输入「疯狂星期四V我50」→ Control+',则「疯狂星期四V我50」添加为 kfc 的第一候选词。其中的「V」和「50」不经 Rime 上屏,而是由应用直接插入,这样的字母、数字和符号同样会被记下(西文模式下输入的也一样),退格删掉的字符也会相应去掉,首尾的空白则会被忽略。
- _.控制层
- 2.开封菜
- 3.铠装层
- 8.看翡翠
- 9.看福彩
- 0.康复操
- _.疯狂星期四V我50📍
- 2.控制层
- 3.开封菜
- 8.铠装层
- 9.看翡翠
- 0.看福彩
再例如,输入 gc → Control+' → 输入「垃圾回收」→ Control+',此时 gc 已经有固定的第一候选词为「刚才」,则「垃圾回收」添加为 gc 的第二候选词。
- _.刚才📌
- 2.高层
- 3.歌词
- 8.干脆
- 9.过错
- 0.个词
- _.刚才📌
- 2.垃圾回收📍
- 3.高层
- 8.歌词
- 9.干脆
- 0.过错
前移和后移
在有编码且选中了一个已固定的词时,按 Control+[ 将已经固定的候选前移,Control+] 将已经固定的词后移。如果前移和后移的过程中遇到其他已经固定的词,则会交换位置。例如,这里有两个已经固定的候选且选中了第一个:
- _.见到📌
- 2.剪刀📌
- 3.捡到
- 8.减到
- 9.尖刀
- 0.剑道
此时按 Control+] 把选中的候选往后移一位。结果如下:
- _.剪刀📌
- 2.见到📌
- 3.捡到
- 8.减到
- 9.尖刀
- 0.剑道
重置
在有编码时,按下 Control+\ 将当前编码上所有的自定义取消。
用户可以使用 snow_sanpin.custom.yaml 定制上述几种操作的快捷键:
patch:
translator/fix_key: "Control+semicolon" # 固定和取消固定
translator/add_key: "Control+apostrophe" # 自由加词
translator/up_key: "Control+bracketleft" # 前移
translator/down_key: "Control+bracketright" # 后移
translator/reset_key: "Control+backslash" # 重置