-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
keydo.schema.yaml
147 lines (123 loc) · 8.29 KB
/
keydo.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
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# 键道·我流默认设置
# encoding: utf-8
# 输入方案概要
schema:
schema_id: keydo # 方案识别名称(用于代码引用)
name: 键道·我流 # 方案显示名称(用于方案切换)
version: "1.0" # 版本号
author: # 方案作者(在Rime中勾选方案时会予以显示)
- 奠基者 - 大牛(吅吅大山)
- 求道者 - SPHS
description: | # 方案描述(在Rime中勾选方案时会予以显示)
「键道·我流」是一款脱胎于「星空键道」的音形码顶功输入方案。
该方案基于Colemak-DH Matrix布局,并对简码及词库进行了大幅优化。
# 候选项菜单
menu:
page_size: 2 # 候选项显示个数
# 模式切换开关
switches:
- name: ascii_mode # 中英文切换(默认中文)
reset: 0
states: ["中", "英"]
- name: full_shape # 全角半角切换(默认半角)
reset: 0
states: ["半角", "全角"]
- name: extended_charset # CJK字符集切换(默认全字符集)
reset: 1
states: ["常用", "扩展"]
# 输入方案引擎
engine:
processors: # 处理器 -> 响应按键并按照预设的规则依次进行编码处理
- ascii_composer # 与`ascii_segmentor`搭配,处理英文模式下的输入编码
- recognizer # 与matcher搭配,处理特定结构的编码(计算器、编码反查等)
- key_binder # 绑定按键并赋予功能(或重新定义按键本身)
- lua_processor@topup_processor # 顶功处理器 -> 判断是否顶功与顶功的内容(顶功逻辑应优先于`speller`逻辑)
- lua_processor@keydo_select_processor # 选择处理器 -> 使特定按键可以选择特定候选项(单引号、斜杠等)
- speller # 将输入编码根据拼写运算规则编辑输入区
- punctuator # 与`punct_segmentor`搭配,将特定按键映射为标点符号(逗号、句号等)
- selector # 将特定按键映射为选择键(数字键、上/下方向键、`PageUp`/`PageDown`等)
- navigator # 使特定按键可以移动输入区中的光标(左/右方向键等)
- express_editor # 将特定按键映射为编辑键(空格、回车、回退键等)
segmentors: # 分段器 -> 将输入编码根据结构进行段落划分与标记
- ascii_segmentor # 标记英文段落,使字母在英文模式下直接上屛
- matcher # 与`recognizer`搭配,标记符合特定规则的段落(计算器、编码反查等)
- abc_segmentor # 标记常规的文字段落(默认标识为`abc`)
- punct_segmentor # 标记标点符号等句读段落(默认标识为`punct`)
- fallback_segmentor # 标记其他未识别段落
translators: # 转换器 -> 将划分好的编码段转换为对应候选项
- punct_translator # 句读转换器 -> 根据标点符号配置将特定按键映射为标点符号
- history_translator@repeat_history # 历史转换器 -> 储存或调取历史输入候选项
- table_translator@char_lookup # 码表转换器 -> 通过编码查询词库(基于输入方案本身)
- lua_translator@keydo_date_time_translator # 日期与时间转换器 -> 获取当前日期与时间
- lua_translator@number_translator # 数字转换器 -> 将阿拉伯数字转换为对应汉字或进行运算
filters: # 过滤器 -> 将转换好的候选项进行过滤(增删改查)
- uniquifier # 去重过滤器 -> 过滤重复的候选项(历史模式中相邻两项可重复一次,即重复连续输入)
- lua_filter@keydo_cand_filter # 优化唯一项自动上屏以及历史模式中的候选项过滤与去重
- reverse_lookup_filter@char_lookup # 反查过滤器 -> 用特定码表来反查词库中的编码
# 布局配置,方便其它配置进行调取
layout:
topup: # 顶功规则
phonetics_code: "bcdefghjklmnpqrstwxyz" # 音码集合
stroke_code: "aiouv" # 形码集合
topup_this: "bcdefghjklmnpqrstwxyz" # 顶功对象编码集,通常为音码
topup_with: "aiouv;" # 顶功触发编码集合,通常为形码
algebra: # 核心拼写运算规则
- derive/^[bcdefghjklmnpqrstwxyz;]([bcdefghjklmnpqrstwxyz;][aiouv].*)$/`$1/ # ssb(...) -> `sb(...)
- derive/^([bcdefghjklmnpqrstwxyz;])[bcdefghjklmnpqrstwxyz;]([aiouv].*)$/$1`$2/ # ssb(...) -> s`b(...)
- derive/^([bcdefghjklmnpqrstwxyz;`]{2})[aiouv](.*)$/$1`$2/ # ssb(...) / `sb(...) / ``b(...) -> ss`(...) / `s`(...) / ```(...)
- derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]).(.*)$/$1`$2/ # ssb?(...) / `sb?(...) / ``b?(...) / ```?(...) -> ssb`(...) / `sb`(...) / ``b`(...) / ````(...)
- derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{2}).(.*)$/$1`$2/ # ssbb?(...) / `sbb?(...) / ``bb?(...) / ```b?(...) / ````?(...) -> ssbb`(...) / `sbb`(...) / ``bb`(...) / ```b`(...) / `````(...)
- derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{3}).(.*)$/$1`$2/ # ssbbb?(...) / `sbbb?(...) / ``bbb?(...) / ```bb?(...) / ````b?(...) / `````?(...) -> ssbbb`(...) / `sbbb`(...) / ``bbb`(...) / ```bb`(...) / ````b`(...) / ``````(...)
- derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{4}).(.*)$/$1`$2/ # ssbbbb?(...) / `sbbbb?(...) / ``bbbb?(...) / ```bbb?(...) / ````bb?(...) / `````b?(...) / ``````?(...) -> ssbbbb`(...) / `sbbbb`(...) / ``bbbb`(...) / ```bbb`(...) / ````bb`(...) / `````b`(...) / ```````(...)
- derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{5}).$/$1`/ # ssbbbbb? / `sbbbbb? / ``bbbbb? / ```bbbb? / ````bbb? / `````bb? / ``````b? / ```````? -> ssbbbbb` / `sbbbbb` / ``bbbbb` / ```bbbb` / ````bbb` / `````bb` / ``````b` / ````````
- derive/^[bcdefghjklmnpqrstwxyz;]{2}([aiouv`]*)$/``$1/ # ss(b...) / ss(`...) -> ``(b...) / ``(`...)
# 判断是否顶功与顶功的内容
topup:
__include: "layout/topup" # 导入顶功规则
min_length: 4 # 编码自动上屏的最小长度(无顶功触发编码)
max_length: 6 # 编码自动上屏的最大长度(全码)
auto_clear: true # 顶功如遇空码时,是否清空输入区
topup_command: true # 首码为顶功触发编码时,是否禁用顶功逻辑
# 截取特定结构的编码传递给下个逻辑块(避免某些按键直接上屏/清空输入区字符串)
recognizer:
patterns: # 配合`segmentor`的`prefix`和`suffix`完成段落划分与标记
calculator: "^=[^;']+$" # 计算器
char_lookup: "[a-z`]*`+[a-z`]*" # 编码反查
# 根据拼写运算规则编辑输入区
speller:
algebra: # 核心拼写运算规则(编译后会写入`build`文件夹中的`prism`文件)
__include: "layout/algebra" # 导入拼写运算规则
auto_select: true # 是否开启无重码时自动上屏(仅在编码吻合时判断)
alphabet: "abcdefghijklmnopqrstuvwxyz;/=`" # 待监听的按键
initials: "abcdefghijklmnopqrstuvwxyz;/=`" # 待监听的首位按键(引导键)
# 将特定字符映射为标点符号或文字处理句读键、数字键
punctuator:
import_preset: keydo.punct # 导入标点符号配置
# 将划分好的编码段转换为对应候选项
translator:
dictionary: keydo # 指定转换器所使用的词库
enable_charset_filter: false # 是否开启字符集过滤
enable_completion: true # 是否提前显示尚未输入完整编码的字
enable_encoder: false # 是否开启自动造词
enable_sentence: false # 是否开启自动造句
enable_user_dict: false # 是否开启用户词库(用于记录动态字词频)
encode_commit_history: false # 是否对已上屛的词进行自动成词
max_phrase_length: 6 # 最大自动成词词长
# 储存或调取历史输入候选项
repeat_history:
input: / # 历史模式引导键
size: 100 # 历史输入候选项储存量
initial_quality: 10000 # 转换结果优先级
# 通过编码查询词库(基于输入方案本身)
char_lookup:
dictionary: keydo # 指定编码查询所使用的词库
tags: [char_lookup] # 指定编码查询所对应的标识
overwrite_comment: true # 是否允许覆写编码提示
enable_charset_filter: false # 是否开启字符集过滤
enable_completion: true # 是否提前显示尚未输入完整编码的字
enable_encoder: false # 是否开启自动造词
enable_sentence: false # 是否开启自动造句
enable_user_dict: false # 是否开启用户词库(用于记录动态字词频)
encode_commit_history: false # 是否对已上屛的词进行自动成词
comment_format: # 指定编码提示格式
- xform/^~[a-z;]+// # 移除以`~`为前缀的逐码提示