├── CHANGELOG.md
├── README.md
├── _config.yml
├── demo
├── encode_commit_history_01.png
├── encode_commit_history_02.png
├── encode_commit_history_03.png
├── encode_commit_history_04.png
├── encode_commit_history_05.png
├── encode_commit_history_06.png
├── environment_variable.png
├── help.gif
├── help.page1.png
├── help.page2.png
├── reverse_lookup.png
├── reverse_lookup_simplified.png
├── reverse_lookup_traditional.png
├── shortcut_keys.gif
├── symbols_jt_comment_xuma.png
├── symbols_xz_comment_xuma.png
├── tripple_comment.png
└── user_dict_comment.png
├── misc
├── anki
│ ├── Anki记忆卡片_徐码字根+一简_20201222.apkg
│ └── README.md
└── 五二顶
│ ├── README.md
│ └── demo
│ ├── phrase_style_with_precand.gif
│ ├── single_style_with_precand.gif
│ ├── slow_phrase_style.gif
│ ├── slow_phrase_style_with_detailed_precand.gif
│ ├── slow_single_style.gif
│ └── slow_single_style_with_precand.gif
├── schema
├── lua
│ └── ace
│ │ ├── helper.lua
│ │ ├── lib
│ │ ├── basic.lua
│ │ └── rime.lua
│ │ ├── os_tools.lua
│ │ ├── single_char_only.lua
│ │ ├── xuma_52p_precand.lua
│ │ ├── xuma_postpone_fullcode.lua
│ │ └── xuma_spelling.lua
├── rime.lua
├── xuma.dict.yaml
├── xuma.extended.dict.yaml
├── xuma.plh.len3.dict.yaml
├── xuma.plh.len4.dict.yaml
├── xuma_52p.dict.yaml
├── xuma_52p_long.dict.yaml
├── xuma_52p_long.schema.yaml
├── xuma_52p_qshare.schema.yaml
├── xuma_52p_reverse.dict.yaml
├── xuma_52p_reverse.schema.yaml
├── xuma_qshare.schema.yaml
├── xuma_qshare_type1.schema.yaml
├── xuma_spelling_pseudo.dict.yaml
└── xuma_spelling_pseudo.schema.yaml
└── 说明.txt
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # 更新日志
2 |
3 | ## 0.7.2 (in plan)
4 |
5 | - 修复:先前错误地移除了 `xuma_52p_long.dict.yaml` 表头的编码设置,导致
6 | `xuma.extended.dict.yaml` 中的无编码词组不能被编码,无法在五二顶方案中打出。现
7 | 恢复该设置。
8 |
9 | ## 0.7.1
10 |
11 | - 修订一批错码和拆分。
12 | - 移除码表中的 GB2312 字频排序分区。
13 | - 移除码表中的 PUA 字符,仅以注释形式保留 PUA+GBK。
14 | - 修复:更新含「匹」词组的编码(该字编码在 0.6.11 中由 `fvef` 改为 `gcuw`)。
15 | - 优化调整一些简码词组(见下方),其中根据邢红兵教授 25 亿字语料统计数据增设了近 1600 个三级简码字。
16 | - 修复:`xuma_52p_qshare.schema:/make_phrase/prism: xuma_qshare` 配置缺失导致造词模式下候选异常。
17 | - 修复:`recoginzer/patterns/uppercase` 与 `recoginzer/patterns/luna_pinyin_lookup` 及 `recoginzer/patterns/stroke` 的冲突
18 | 。
19 | - 优化:五二顶方案的「预显候选」在输入串含有反撇号 `` ` `` 时不生效,以防在造词和反查模式中由于处理不完善而产生干扰效果。
20 | - 新增:将三重注解分为四个显示级别——〇注解、一重注解(只含拆分)、二重注解(拆分、编码)、三重注解(拆分、编码、拼音),可用快捷键 `Shift+Control+C` 循环切换。该切换方式通过 `lua_processor` 实现。
21 | - 变更:将五二顶方案的「预显候选」「详示候选」两个选项,与禁用功能的「正常预显」选项组成一组,由快捷键 `Control+d` 循环切换。该切换方式通过 `lua_processor` 实现。
22 | - 新增:全码后置功能增加设置项 `xuma_postpone_fullcode/lua/max_index`,用于指定最大后置位置。
23 |
24 |
25 | 简码变更点击展开详情
26 |
27 | ```
28 | -得 s
29 | +然 s
30 | -了解 b
31 | +那里 b
32 | -大家 f
33 | +或者 f
34 | -来说 i
35 | +本身 i
36 | -见过 m
37 | +刚才 m
38 | -綝 ai
39 | +厶 ai
40 | -输 fu
41 | +拍 fu
42 | -拦 fx
43 | +拼 fx
44 | -杜 ij
45 | +巧 ij
46 | -题 kg
47 | +量 kg
48 | -赠 mx
49 | +赚 mx
50 | -眠 nd
51 | +鬥 nd
52 | -镇 pe
53 | +午 pe
54 | -争 qb
55 | +急 qb
56 | -馉 qn
57 | +負 qn
58 | -农 qr
59 | +饭 qr
60 | -廷 rb
61 | +季 rb
62 | -然 sj
63 | -胆 sk
64 | +周 sj
65 | +得 sk
66 | -俱 tn
67 | +躺 tn
68 | -父 tt
69 | +份 tt
70 | -宗 wf
71 | +穿 wf
72 | -论 zu
73 | +认 zu
74 |
75 | -除外 bq
76 | +了解 bq
77 | -或者 fj
78 | +区域 fj
79 | -成员 fo
80 | +区别 fo
81 | -指定 fw
82 | +大家 fw
83 | -更多 gq
84 | +形象 gq
85 | -来看 ip
86 | +事物 ip
87 | -事情 iu
88 | +整个 iu
89 | -工商 iy
90 | +极端 iy
91 | -刚才 mi
92 | +见过 mi
93 | -管理 pe
94 | +简直 pe
95 | -策略 pk
96 | +算是 pk
97 | -后台 ra
98 | +税收 ra
99 | -稳定性 rw
100 | +程序员 rw
101 | -公众 tu
102 | +倾向 tu
103 | -今日 uk
104 | +含量 uk
105 | -立刻 yy
106 | +效率 yy
107 | -也会 be
108 | +迅速 be
109 | -群体 bp
110 | +群众 bp
111 | -娱乐 co
112 | +加速 co
113 | -劝说 dc
114 | +邓小平 dc
115 | -弹性 dx
116 | +屏幕 dx
117 | -区域 ft
118 | +欧洲 ft
119 | -面对 gn
120 | +面前 gn
121 | -花园 ht
122 | +共享 ht
123 | -极为 ia
124 | +极限 ia
125 | -事件 io
126 | +事情 io
127 | -求助 ix
128 | +来说 ix
129 | -赴美 jl
130 | +考虑到 jl
131 | -题目 kg
132 | +是否 kg
133 | -则为 ml
134 | +罪恶 ml
135 | -唱歌 ok
136 | +中间 ok
137 | -策划 pi
138 | +策略 pi
139 | -失误 pw
140 | +管理 pw
141 | -科目 rz
142 | +毛泽东 rz
143 | -律师 sb
144 | +很少 sb
145 | -须知 sg
146 | +用不着 sg
147 | -脸色 su
148 | +脾气 su
149 | -就不能 yg
150 | +离不开 yg
151 | -立即 yl
152 | +立刻 yl
153 | -商业 yx
154 | +旁边 yx
155 | -阁下 zv
156 | +谣言 zv
157 |
158 | +斚 aae
159 | +叄 aai
160 | +蠿 aal
161 | +欪 aaq
162 | -骖 aas
163 | +參 aas
164 | +緑 aba
165 | +妝 acv
166 | +繏 adh
167 | +紉 adp
168 | +牁 aeo
169 | +綺 afe
170 | +綫 aff
171 | +紆 agi
172 | +縳 ago
173 | +綝 aii
174 | +繮 aik
175 | +刴 ail
176 | +牀 aiv
177 | +弉 ajh
178 | +綾 ajt
179 | +壯 aju
180 | +坔 ajv
181 | +綽 alk
182 | +纙 ama
183 | +盁 amm
184 | +纓 ann
185 | +繾 aod
186 | +枲 aoi
187 | +呇 aov
188 | +欸 apq
189 | +絑 apt
190 | +紈 arw
191 | +漿 asa
192 | +醬 ase
193 | +將 asi
194 | +獎 asj
195 | +絢 ask
196 | +態 asr
197 | +総 ata
198 | +驯 atc
199 | +繪 aux
200 | +綬 avq
201 | +終 avz
202 | +綰 awd
203 | +繽 awn
204 | +綩 awq
205 | +継 axc
206 | +綣 axj
207 | +縊 axt
208 | +牂 axy
209 | +孨 bbb
210 | +孖 bbz
211 | +墬 bcg
212 | +乸 bcm
213 | +巹 bdd
214 | +氶 bdu
215 | +孲 ben
216 | -阨 bgb
217 | +聼 bhg
218 | +尋 bio
219 | +彟 bit
220 | +隢 bjj
221 | +疎 bli
222 | +疍 blk
223 | +氄 bmr
224 | +凾 boa
225 | +隕 bon
226 | +楘 bpi
227 | +堥 bpj
228 | -阼 bpl
229 | +虱 bpl
230 | +嵍 bpm
231 | +愗 bpr
232 | +彚 bqk
233 | +阾 buw
234 | +務 bvc
235 | +櫽 bvr
236 | +孮 bwf
237 | +彛 bxd
238 | +阧 bze
239 | +娭 cap
240 | +廵 cbd
241 | +媃 cbi
242 | +嫿 cbk
243 | +婦 cbq
244 | +恏 cbr
245 | +姦 ccc
246 | +嫪 ccu
247 | -缀 cdd
248 | +弩 cdd
249 | +姸 cee
250 | +姮 cek
251 | +妸 ceo
252 | +婻 cex
253 | +嫽 cfk
254 | +娪 cgd
255 | +娬 cgf
256 | +妧 cgg
257 | +婳 cgk
258 | +孋 cgw
259 | +娵 chd
260 | +婼 chh
261 | +媟 chi
262 | +孉 cho
263 | +婲 cht
264 | +嬾 ciq
265 | +姞 cjo
266 | +娡 cjr
267 | +媩 cjs
268 | +娚 ckc
269 | +婌 clc
270 | +媜 cln
271 | +嫭 clx
272 | +媢 cme
273 | +姎 cmf
274 | +婰 cmh
275 | +姌 cmj
276 | +嬛 cmo
277 | +媺 cmq
278 | +嫻 cni
279 | +孆 cnn
280 | +媼 cnu
281 | +娛 coc
282 | +娖 col
283 | +嫵 cpg
284 | +鄊 cph
285 | +嬏 cpx
286 | +妳 cqc
287 | +姽 cqg
288 | +嬔 cqp
289 | +嬎 cqv
290 | +奺 cqw
291 | +嫇 cqy
292 | +娗 crb
293 | +婑 crc
294 | +姤 crg
295 | +娳 crl
296 | +嬌 crm
297 | +姡 cro
298 | +婤 csj
299 | +勠 cuc
300 | +媓 cue
301 | +孅 cul
302 | +媕 cuo
303 | +媱 cvp
304 | +婬 cvr
305 | +嬀 cvs
306 | +嫏 cwa
307 | +嬪 cwn
308 | +孃 cwo
309 | +嫞 cws
310 | +尐 cwu
311 | +嬸 cwx
312 | +婘 cxj
313 | +嫾 cxq
314 | +災 cxv
315 | +嫙 cyb
316 | +弢 dad
317 | +強 dal
318 | +斸 dar
319 | +韖 dbi
320 | +妀 dcv
321 | +叕 ddd
322 | +敠 ddl
323 | +發 ddq
324 | +脋 dds
325 | +発 dec
326 | +皯 deg
327 | +叞 dfd
328 | +戣 dff
329 | +暋 dfk
330 | +彄 dfo
331 | +敃 dfp
332 | +弙 dgi
333 | +屍 dgv
334 | +韡 dhh
335 | +彊 dik
336 | +屆 dja
337 | +彌 dje
338 | +叏 dkd
339 | +盄 dkm
340 | +弔 dku
341 | +岊 dmv
342 | +覌 dnj
343 | +屭 dnn
344 | +卲 doa
345 | +巶 dod
346 | +屗 dri
347 | +屜 dsh
348 | +屩 dsm
349 | +弸 dss
350 | +弣 dti
351 | +刜 dtl
352 | +鳮 dun
353 | -鴂 duu
354 | +韜 dvu
355 | +彍 dwt
356 | +遅 dxz
357 | +弶 dyc
358 | +丒 dyu
359 | +弾 dze
360 | +叆 ead
361 | +晉 eak
362 | +珆 eao
363 | +珺 ebp
364 | +璛 ebt
365 | +瑑 ecg
366 | +璅 eck
367 | +郉 eeb
368 | +驖 eee
369 | +瑱 een
370 | +璈 eeq
371 | +璷 eey
372 | +臷 efa
373 | -駏 efd
374 | +馱 efd
375 | +烖 efx
376 | +珷 egf
377 | +玗 egi
378 | +頂 egy
379 | +瓂 eha
380 | -駵 ehd
381 | +髪 ehd
382 | +瑹 ehg
383 | +璂 ehj
384 | +璓 ehr
385 | +瑨 ehx
386 | +瑓 ein
387 | +珪 ejj
388 | +醘 ejm
389 | +歅 ejq
390 | +垔 ejv
391 | +璉 ejz
392 | +瓃 ekk
393 | +騦 ekr
394 | +琝 eky
395 | +瓛 elk
396 | +璿 elu
397 | +琌 emw
398 | +瑣 enn
399 | +惡 enr
400 | +蟗 eoa
401 | +喪 eof
402 | +悪 eor
403 | +璑 epg
404 | +璠 epx
405 | +珮 eqg
406 | +瓊 eqn
407 | +琇 era
408 | +珽 erb
409 | +酔 ere
410 | +瓆 erj
411 | -鬁 erl
412 | +琍 erl
413 | +镺 ery
414 | +琱 esj
415 | +靚 esn
416 | +琋 eth
417 | +瑔 eua
418 | +玠 eut
419 | +験 euu
420 | +璯 eux
421 | +璬 euy
422 | +瑠 evd
423 | +朮 evw
424 | +鬔 evz
425 | +琯 ewd
426 | -琮 ewf
427 | +鬃 ewf
428 | +瓌 ewm
429 | +璘 exq
430 | +璲 exr
431 | +瑐 exs
432 | +瓏 eys
433 | +珱 ezc
434 | +酙 eze
435 | +琺 ezj
436 | +旾 fak
437 | +撧 faq
438 | +摪 fas
439 | +捘 fat
440 | +扱 faw
441 | +捸 fba
442 | +揟 fbl
443 | +夀 fbo
444 | +掃 fbq
445 | +挶 fdb
446 | +婜 fdc
447 | +竪 fdy
448 | +弍 fee
449 | +撢 fek
450 | +貳 fen
451 | +攧 fet
452 | +扽 ffa
453 | -轼 ffi
454 | +拭 ffi
455 | +撦 ffj
456 | +蠺 ffl
457 | -奁 fft
458 | +抠 fft
459 | +挾 ffu
460 | +奤 fge
461 | +扜 fgi
462 | +抦 fgm
463 | +烕 fgx
464 | +攝 fhh
465 | +攤 fhj
466 | +搆 fhm
467 | +扙 fhw
468 | +搢 fhx
469 | +挷 fib
470 | +揳 fid
471 | +揀 fin
472 | +摗 fio
473 | +攋 fiq
474 | +弎 fis
475 | +捄 fix
476 | +擡 fja
477 | +奲 fje
478 | +匵 fjn
479 | +搨 fkc
480 | +揋 fkf
481 | +捰 fki
482 | +揌 fkr
483 | +揁 fln
484 | +掯 fls
485 | +撲 flx
486 | +捵 fmh
487 | +擉 fms
488 | +抐 fmu
489 | +擺 fmv
490 | +擇 fmx
491 | +攔 fnn
492 | +搵 fnu
493 | +擱 fnv
494 | +挰 foe
495 | +尀 foi
496 | +撣 fok
497 | +歐 foq
498 | +鷗 fou
499 | +栆 foz
500 | +抍 fph
501 | +挻 fpl
502 | -贀 fpn
503 | +覽 fpn
504 | +抸 fpz
505 | +挆 fqi
506 | +揮 fqj
507 | +揗 fre
508 | +轨 frj
509 | +撟 frm
510 | +抅 fsa
511 | +朢 fse
512 | +摖 fsf
513 | +撚 fsj
514 | +匫 fsk
515 | +掤 fss
516 | +摐 fsu
517 | +扚 fsw
518 | +搝 ftj
519 | +奮 ftk
520 | +擕 ftm
521 | +挩 fto
522 | +拰 ftr
523 | +擽 fua
524 | +抢 fub
525 | +揑 fui
526 | +输 ful
527 | +揜 fuo
528 | +撽 fuy
529 | +搥 fuz
530 | -轹 fvc
531 | +挼 fvc
532 | +炁 fvs
533 | +兓 fvv
534 | +攟 fwn
535 | +挓 fwp
536 | +捥 fwq
537 | +捬 fwt
538 | +揢 fwv
539 | -撙 fxe
540 | +拦 fxe
541 | -拼 fxh
542 | +捲 fxj
543 | +搃 fxo
544 | +撈 fxq
545 | +揹 fxv
546 | +掞 fxx
547 | +遼 fxz
548 | +撴 fyb
549 | +捽 fyu
550 | +搧 fzc
551 | - fzf
552 | +㧟 fzf
553 | +撹 fzq
554 | +匯 fzt
555 | +砐 gaw
556 | +磗 gei
557 | +厫 gep
558 | +殝 ger
559 | +尫 gev
560 | +砡 gew
561 | +殘 gff
562 | +硤 gfu
563 | +厔 ggj
564 | +礚 gha
565 | +殢 ghm
566 | +歴 gil
567 | +殏 giw
568 | +殰 gjn
569 | +厐 gjp
570 | +碐 gjt
571 | +檿 gki
572 | +壓 gkj
573 | +擪 gkr
574 | +列 gld
575 | +厞 glf
576 | +殬 gme
577 | +覔 gnj
578 | +厰 gnp
579 | +殞 gon
580 | +歿 gqd
581 | +磔 gqf
582 | -砜 gqt
583 | +確 gqt
584 | +砕 gre
585 | +曆 grk
586 | -磃 grl
587 | +歷 grl
588 | +厤 grr
589 | +殀 gry
590 | +戞 gsq
591 | +憂 gsr
592 | +殠 gtj
593 | +礫 gua
594 | +礖 guo
595 | +厱 guq
596 | +磂 gvd
597 | +厎 gvw
598 | +剢 gwl
599 | +殯 gwn
600 | +硑 gxh
601 | +豴 gyj
602 | +逐 gzd
603 | -鞿 hau
604 | +蔘 hau
605 | +蔭 hbe
606 | +薌 hca
607 | +歁 hcq
608 | -蕡 heh
609 | +華 heh
610 | +瓧 heu
611 | +荑 hfd
612 | +帶 hgq
613 | +枼 hiv
614 | +莰 hjq
615 | +爇 hjw
616 | +皵 hkd
617 | +刵 hld
618 | +蕋 hll
619 | +勚 hmc
620 | +萺 hme
621 | +斠 hmz
622 | +蔛 hqz
623 | +瓪 hrd
624 | +薫 hre
625 | +鞥 huh
626 | +蘹 hum
627 | +藰 hvv
628 | +苳 hvz
629 | -蕖 hzd
630 | +菠 hzd
631 | +蘫 hzp
632 | +柮 iaa
633 | +柪 iac
634 | +卭 iae
635 | +機 iaf
636 | +桗 iai
637 | +枱 iao
638 | +極 ibd
639 | +樳 ibo
640 | +槂 ibp
641 | +梫 ibq
642 | +樔 ick
643 | +桚 icq
644 | +櫂 ict
645 | +杻 ide
646 | +柫 idt
647 | +柅 idv
648 | +櫈 idx
649 | +棲 ieb
650 | +枑 iec
651 | +枿 ieh
652 | +榑 iei
653 | +槚 iem
654 | +桲 ieq
655 | +槱 ies
656 | +樁 ieu
657 | +棧 iff
658 | +桍 ifg
659 | +楏 ifj
660 | +欖 ifm
661 | +棫 ifo
662 | +橬 ifv
663 | +梿 ifz
664 | +柸 igg
665 | +杇 igj
666 | +剨 igl
667 | +橞 igo
668 | +棷 ihd
669 | +楉 ihh
670 | +楕 ihi
671 | +欗 ihn
672 | +權 iho
673 | +栱 iht
674 | +樥 ihv
675 | +埜 iij
676 | +樕 iio
677 | +棶 iiu
678 | +榼 ija
679 | +欛 ijh
680 | +櫝 ijm
681 | +槻 ijn
682 | +槸 ijr
683 | +楜 ijs
684 | +欞 iju
685 | -栳 ijv
686 | +樹 ijx
687 | +槤 ijz
688 | +樏 ika
689 | +桿 ike
690 | +柦 ikg
691 | +橸 ikk
692 | +榅 ikm
693 | +榥 ikn
694 | +欉 ilh
695 | -螙 ill
696 | +枮 ilo
697 | +椃 ilq
698 | +樸 ilx
699 | - ima
700 | +䎬 ima
701 | +枏 ime
702 | +柟 imj
703 | +敇 imp
704 | +槯 imt
705 | +梣 imw
706 | +檡 imx
707 | +梱 ini
708 | +櫻 inn
709 | +欔 int
710 | +剚 iob
711 | -鶒 ioc
712 | +柺 ioc
713 | +桯 ioe
714 | +柂 ipb
715 | +剺 ipd
716 | +柹 ipk
717 | +桖 ipm
718 | +氂 ipr
719 | +栴 ips
720 | +斄 ipu
721 | +柣 ipw
722 | +橎 ipx
723 | -檐 iqt
724 | +枫 iqt
725 | +杦 iqw
726 | +楯 ire
727 | +柲 irp
728 | +枹 isd
729 | +栒 isk
730 | +枬 isy
731 | +椼 isz
732 | +欝 ita
733 | +枌 itd
734 | +栿 itj
735 | +楩 itk
736 | +檇 itm
737 | +柗 ito
738 | +栣 itr
739 | +欅 iut
740 | +檜 iux
741 | +枊 iva
742 | +楥 ive
743 | +梐 ivj
744 | +楡 ivs
745 | +柊 ivz
746 | +槺 iwb
747 | +榊 iwk
748 | +檸 iwm
749 | +檳 iwn
750 | +椀 iwq
751 | +櫥 iwx
752 | +榟 iwy
753 | +亊 ixb
754 | +柈 ixf
755 | +栟 ixh
756 | +樣 ixj
757 | +椪 ixl
758 | +棁 ixo
759 | +橉 ixq
760 | +慭 ixr
761 | +棪 ixx
762 | +槨 iyb
763 | +椄 iyc
764 | +橦 iyj
765 | +椸 iyp
766 | +檍 iyr
767 | +枓 ize
768 | +楄 izm
769 | +刧 jad
770 | +弆 jah
771 | +擊 jar
772 | +埈 jat
773 | +垏 jbf
774 | +壻 jbl
775 | +壽 jbo
776 | +丏 jcb
777 | +毐 jch
778 | +堳 jdn
779 | +坲 jdt
780 | +塀 jdx
781 | +墳 jeh
782 | +壊 jem
783 | +軑 jfd
784 | +壏 jfp
785 | +塽 jft
786 | +垯 jfz
787 | -輭 jgf
788 | +堧 jgf
789 | +塼 jgo
790 | +壒 jha
791 | +趞 jhk
792 | +墆 jhq
793 | +壃 jik
794 | +壩 jjh
795 | +墻 jjn
796 | +幫 jju
797 | +雫 jjw
798 | +墶 jjx
799 | +殾 jkq
800 | +堺 jku
801 | +煑 jkx
802 | +埱 jlc
803 | +垰 jlj
804 | +埗 jln
805 | +椝 jmi
806 | +坰 jmo
807 | +塴 jms
808 | +垱 jnb
809 | +鬹 jnk
810 | +埧 jnt
811 | +輯 joh
812 | +喆 joj
813 | +墠 jok
814 | -霣 jon
815 | +塤 jon
816 | +欯 joq
817 | - jpf
818 | +䶮 jpf
819 | +塩 jpo
820 | +墦 jpx
821 | +壼 jqe
822 | -豰 jqg
823 | +塚 jqg
824 | +壸 jqh
825 | +堔 jqt
826 | +埵 jrh
827 | +暫 jrk
828 | +鏨 jrv
829 | +怘 jrx
830 | +霢 jsr
831 | +鶦 jsu
832 | +赯 jtk
833 | +埶 jtr
834 | +趖 juj
835 | -鴣 jun
836 | +嗇 jun
837 | +垺 jvb
838 | +兝 jvd
839 | +剋 jvl
840 | +輅 jvo
841 | +垿 jwb
842 | +垵 jwc
843 | +壞 jwm
844 | +垞 jwp
845 | +埦 jwq
846 | +壌 jwt
847 | +報 jxa
848 | +頬 jxg
849 | +埢 jxj
850 | +増 jxk
851 | +執 jxr
852 | +墡 jxx
853 | +堉 jya
854 | +塆 jyd
855 | +墥 jyj
856 | +壇 jyk
857 | +塙 jym
858 | +轍 jyp
859 | +靋 jzl
860 | +昪 kah
861 | +晙 kat
862 | +畯 kav
863 | +昅 kaw
864 | +廸 kbd
865 | +曏 kca
866 | +毾 kcr
867 | +疁 kcs
868 | +昲 kdt
869 | +暁 keh
870 | +晅 kek
871 | +旽 kfa
872 | +煚 kfd
873 | +晇 kfg
874 | +暱 kfh
875 | +暸 kfk
876 | +晣 kfr
877 | +晊 kga
878 | +尟 kgc
879 | +题 kgg
880 | +曞 kgh
881 | +旴 kgi
882 | -量 kgk
883 | +曬 kgw
884 | +畢 khe
885 | +曚 khg
886 | +暎 khm
887 | +暵 kho
888 | +暪 khv
889 | +昻 kia
890 | +敤 kil
891 | +暕 kin
892 | +曇 kje
893 | +曘 kjg
894 | +時 kji
895 | +曀 kjo
896 | +昽 kjp
897 | +曤 kjt
898 | +暿 kjx
899 | +壘 kkj
900 | +疊 kkn
901 | +暻 kko
902 | +氎 kkr
903 | +晹 kks
904 | +児 kkv
905 | +晫 klk
906 | +曪 kma
907 | +冑 kme
908 | +晍 kmg
909 | +曎 kmx
910 | +勗 knc
911 | +晄 kng
912 | +曮 koh
913 | +旿 kpe
914 | +昇 kph
915 | +晧 kpo
916 | +帰 kpq
917 | +昳 kpw
918 | +暣 kpx
919 | +暈 kqj
920 | +晩 kqk
921 | +畳 kqn
922 | +曕 kqt
923 | +畽 kre
924 | +顋 krg
925 | +琞 kse
926 | +暩 ksf
927 | +曌 ksw
928 | +昖 kta
929 | +甽 ktc
930 | +昐 ktd
931 | +晞 kth
932 | +暅 kue
933 | +暤 kuf
934 | +晲 kuv
935 | +昤 kuw
936 | +暭 kux
937 | +曒 kuy
938 | +曖 kvr
939 | +鵾 kvu
940 | +昸 kvz
941 | +曠 kwk
942 | +晼 kwq
943 | +疄 kxf
944 | +暛 kxi
945 | +暽 kxq
946 | +晱 kxx
947 | +昡 kya
948 | +暲 kyk
949 | +暠 kym
950 | +曨 kys
951 | +晈 kyt
952 | +戱 laf
953 | +螁 lbz
954 | +歩 lcp
955 | +惄 lcr
956 | +尗 lcx
957 | +翡 lcy
958 | +蝦 ldd
959 | +蟤 ldh
960 | +歵 len
961 | +歲 lfn
962 | -蝡 lgf
963 | +戲 lgf
964 | +獻 lgj
965 | +蟎 lhv
966 | +棐 liv
967 | +歭 lji
968 | +蛣 ljo
969 | +慮 lkr
970 | +剕 lld
971 | +戯 llf
972 | +覷 lln
973 | +蛐 lmh
974 | +頻 lng
975 | +齫 lni
976 | +遉 lnz
977 | +齪 lol
978 | +螻 loo
979 | +迠 loz
980 | +歑 lpq
981 | +甝 lqe
982 | - lqp
983 | +䲣 lqp
984 | +蚐 lsx
985 | +蝂 ltr
986 | +蠊 lwl
987 | +歯 lxa
988 | +峅 mah
989 | +埊 maj
990 | +峮 mbp
991 | +眔 mct
992 | +幈 mdh
993 | -罱 mee
994 | +崋 meh
995 | +峘 mek
996 | - mes
997 | +冐 mes
998 | +帳 mez
999 | +黗 mfa
1000 | +嶇 mfo
1001 | +峣 mfp
1002 | +歂 mgq
1003 | +巎 mgt
1004 | -顗 mgx
1005 | +凱 mgx
1006 | +幙 mhf
1007 | +帗 mhw
1008 | +豔 mia
1009 | +嵖 mik
1010 | +帓 mim
1011 | +黷 mjn
1012 | +斁 mjp
1013 | -瞏 mjr
1014 | +嶄 mjr
1015 | +崚 mjt
1016 | +幜 mkc
1017 | +崵 mks
1018 | +嵑 mku
1019 | +崐 mkv
1020 | +峠 mlj
1021 | +幀 mln
1022 | +崗 mmx
1023 | +幗 mng
1024 | +崱 mnl
1025 | +巊 mnn
1026 | +帩 mns
1027 | +幱 mnx
1028 | +幝 moe
1029 | +崿 mog
1030 | +巖 moh
1031 | +嵓 moo
1032 | +帲 mpe
1033 | +岞 mpl
1034 | +峼 mpo
1035 | +嵚 mpq
1036 | +巑 mpv
1037 | +嶓 mpx
1038 | +嶰 mqd
1039 | +峗 mqg
1040 | +崅 mqs
1041 | +嵙 mrz
1042 | +嵂 msb
1043 | +斣 mse
1044 | +嶶 msq
1045 | +嶲 mtm
1046 | -酅 mto
1047 | +冏 mto
1048 | +嶕 mts
1049 | +嶺 mud
1050 | +崄 mue
1051 | +帢 muo
1052 | +巋 muq
1053 | +幒 mur
1054 | +岇 mva
1055 | +崏 mvf
1056 | +嶔 mvq
1057 | +巓 mvt
1058 | +幍 mvu
1059 | +嶽 mvy
1060 | +峵 mwh
1061 | +嵣 mwk
1062 | +幰 mwr
1063 | +岮 mwv
1064 | +嶬 mxf
1065 | +帡 mxh
1066 | -罾 mxk
1067 | +赠 mxk
1068 | +嵰 mxl
1069 | +剛 mxm
1070 | +巆 mxo
1071 | -赚 mxt
1072 | +帨 mxv
1073 | +幟 myf
1074 | +罸 myi
1075 | +巐 myp
1076 | +嵉 myq
1077 | +巃 mys
1078 | +峧 myt
1079 | +崒 myu
1080 | +巌 mzh
1081 | +圗 nae
1082 | +賐 nav
1083 | +贐 nbm
1084 | +懸 ncr
1085 | -睽 ndf
1086 | +眠 ndf
1087 | +睸 ndn
1088 | -圃 nef
1089 | +瞟 nef
1090 | +闖 nem
1091 | +闐 net
1092 | +賬 nez
1093 | +眓 nfc
1094 | +閕 nfy
1095 | +賑 ngn
1096 | +慁 ngr
1097 | +圂 ngs
1098 | +閂 ngu
1099 | +聞 nhe
1100 | +団 nic
1101 | +闔 njm
1102 | +園 njr
1103 | - njs
1104 | +䴗 njs
1105 | +鶪 nju
1106 | +闥 njz
1107 | +閘 nkj
1108 | +睲 nkp
1109 | +廽 nlb
1110 | +則 nld
1111 | +囬 nle
1112 | +髗 nlm
1113 | +逥 nlz
1114 | +圛 nme
1115 | +嬰 nnc
1116 | +闁 nnm
1117 | +愳 nnr
1118 | +鸚 nnu
1119 | +煛 nnx
1120 | +廻 nob
1121 | +剮 nol
1122 | -瞶 noo
1123 | +圖 noo
1124 | +敗 npp
1125 | +貶 npz
1126 | +甞 nqh
1127 | +劏 nqk
1128 | +瞃 nre
1129 | +囷 nrv
1130 | +睭 nsj
1131 | +眗 nso
1132 | +閥 ntf
1133 | +囧 ntm
1134 | +圀 nty
1135 | +賖 nui
1136 | - nuj
1137 | +閰 nuj
1138 | +圇 num
1139 | +矈 nuw
1140 | +瞹 nvr
1141 | +賍 nwj
1142 | +髖 nww
1143 | +圏 nxd
1144 | +髊 nxi
1145 | +賥 nye
1146 | +圞 nyi
1147 | +贚 nyl
1148 | -瞝 nym
1149 | +鬧 nym
1150 | +髈 nyy
1151 | +閼 nyz
1152 | +図 nzt
1153 | +嘰 oaf
1154 | +喲 oas
1155 | +嘇 oau
1156 | +噉 obh
1157 | +吚 obp
1158 | +唚 obq
1159 | +嚍 obs
1160 | +嘯 obt
1161 | +嘨 obx
1162 | +吳 ocf
1163 | +嘐 ocu
1164 | +吜 ode
1165 | +噀 odh
1166 | +咈 odt
1167 | -啧 oem
1168 | +嚽 oep
1169 | -鄂 ogb
1170 | +呃 ogb
1171 | +嚴 ogp
1172 | +嚘 ogr
1173 | +吰 oha
1174 | -嗬 ohe
1175 | +嚡 ohj
1176 | +囒 ohn
1177 | -蹃 oho
1178 | +嘆 oho
1179 | +囓 oid
1180 | +唝 oim
1181 | +嗊 oin
1182 | +唽 oir
1183 | +唻 oiu
1184 | +呾 okg
1185 | +跩 okp
1186 | +嚗 okt
1187 | +噓 ola
1188 | +囉 oma
1189 | +咉 omf
1190 | -嗣 omg
1191 | +喘 omg
1192 | +噮 omo
1193 | +嚺 omr
1194 | +嗺 omt
1195 | +吶 omv
1196 | -躢 onc
1197 | +勛 onc
1198 | +啯 one
1199 | +嗩 onn
1200 | +噹 ono
1201 | +躙 ont
1202 | +嚐 onv
1203 | +哵 ooc
1204 | +呺 ooj
1205 | +呮 oot
1206 | +囖 opa
1207 | +呏 oph
1208 | +斝 oqe
1209 | +別 oql
1210 | +喚 oqt
1211 | +啗 oqu
1212 | +嚵 oqv
1213 | +喠 ork
1214 | +唎 orl
1215 | +踲 orn
1216 | +咇 orp
1217 | +喢 oru
1218 | +咰 osk
1219 | +喌 ost
1220 | +鵑 osu
1221 | +哬 ote
1222 | +嗰 otn
1223 | +喺 otp
1224 | +嘷 otx
1225 | +吤 out
1226 | +喞 ouv
1227 | +噭 ouy
1228 | +嗂 ovp
1229 | +咹 owc
1230 | +躟 owh
1231 | +嗐 owi
1232 | +嚀 owm
1233 | -嘧 owp
1234 | +咤 owp
1235 | +啘 owq
1236 | +嚤 owr
1237 | +躥 owu
1238 | +噂 oxe
1239 | +啳 oxj
1240 | +嗛 oxl
1241 | +嘮 oxq
1242 | +唥 oxw
1243 | +噋 oyb
1244 | +踤 oye
1245 | +嚨 oys
1246 | +呝 ozb
1247 | +唦 ozc
1248 | +呌 oze
1249 | - paf
1250 | +䥽 paf
1251 | +牠 pbe
1252 | +毎 pce
1253 | +簀 pen
1254 | +幷 pep
1255 | +镇 pet
1256 | +针 peu
1257 | - pfy
1258 | +䥺 pfy
1259 | +篶 pgc
1260 | +観 pgt
1261 | +笻 pia
1262 | +籕 pid
1263 | +犢 pjn
1264 | +籗 pjt
1265 | +钾 pkj
1266 | +籚 plk
1267 | +卹 pma
1268 | - pnd
1269 | +䦆 pnd
1270 | +锢 pnj
1271 | +簒 pnp
1272 | +籑 pnw
1273 | -箰 psk
1274 | +筍 psk
1275 | +笅 ptt
1276 | +箏 pvb
1277 | +牴 pvw
1278 | +怣 pwr
1279 | +犉 pyb
1280 | - pzc
1281 | +䦂 pzc
1282 | +簗 pzt
1283 | +夘 qae
1284 | -邹 qbb
1285 | +争 qbb
1286 | +鰎 qbf
1287 | -急 qbr
1288 | +怨 qbr
1289 | +鱾 qdj
1290 | +鲏 qdp
1291 | - qek
1292 | +䲠 qek
1293 | +鲼 qem
1294 | +颬 qfy
1295 | +矦 qgp
1296 | +鲯 qhq
1297 | +鯟 qik
1298 | +鯻 qio
1299 | +鰗 qjs
1300 | +鯥 qjt
1301 | +運 qjz
1302 | +鰣 qkj
1303 | +鯹 qkp
1304 | +鮛 qlc
1305 | +鲈 qld
1306 | +鲱 qlf
1307 | +敻 qmn
1308 | +馉 qng
1309 | +鰂 qnl
1310 | +颶 qnt
1311 | -鮸 qqo
1312 | +夠 qqo
1313 | -饭 qrd
1314 | +鱎 qrm
1315 | +颳 qro
1316 | +鲌 qub
1317 | +鰤 qug
1318 | +鳯 qun
1319 | +欿 quq
1320 | - qva
1321 | +䲟 qva
1322 | +邥 qvb
1323 | +鴆 qvu
1324 | +鮗 qvz
1325 | +飈 qxx
1326 | +鲂 qyu
1327 | +毪 rap
1328 | +廷 rbd
1329 | +慇 rbq
1330 | +覣 rcn
1331 | +毜 rcx
1332 | +卆 reu
1333 | +稶 rfg
1334 | +毧 rfh
1335 | +巵 rgd
1336 | +氁 rhf
1337 | +甀 rhh
1338 | +剰 rhl
1339 | +颀 rjg
1340 | +斶 rjs
1341 | +動 rkc
1342 | +馩 rkh
1343 | +舳 rko
1344 | +馞 rkq
1345 | +勲 rks
1346 | +勳 rmc
1347 | +舏 roa
1348 | +舑 roj
1349 | +舕 rox
1350 | +槃 rqi
1351 | +螌 rql
1352 | +鵚 rqu
1353 | +褩 rqw
1354 | +瓟 rsd
1355 | +稝 rss
1356 | +毱 rsx
1357 | +舩 rta
1358 | +奿 rwc
1359 | +湬 rxa
1360 | +媝 rxc
1361 | +甃 rxh
1362 | +氊 ryg
1363 | +徤 sbb
1364 | +脇 scc
1365 | +衞 sdm
1366 | +炰 sds
1367 | +胢 seo
1368 | +彺 sev
1369 | +脻 sgb
1370 | +徑 sgi
1371 | +腜 she
1372 | +臙 shv
1373 | +徔 shz
1374 | +徠 siu
1375 | +雕 sjo
1376 | +胆 skg
1377 | +徥 skl
1378 | +徏 sln
1379 | +胦 smf
1380 | +懲 smr
1381 | +邭 sob
1382 | +斪 sor
1383 | +腁 spp
1384 | +徃 sps
1385 | +朌 std
1386 | +朡 stt
1387 | +彾 sud
1388 | +從 sul
1389 | +慫 sur
1390 | +腉 suv
1391 | +彽 svw
1392 | -脁 svx
1393 | +朓 svx
1394 | +膣 swa
1395 | +朖 swb
1396 | +徶 sxp
1397 | +匄 syc
1398 | +朣 syj
1399 | +刐 syl
1400 | +徬 syy
1401 | +徧 szm
1402 | +佁 tao
1403 | +忩 tar
1404 | +兇 tav
1405 | +伋 taw
1406 | +怹 tbr
1407 | +儘 tbs
1408 | +僪 tbt
1409 | +仯 tcp
1410 | +僇 tcu
1411 | +僎 tdh
1412 | +蚠 tdl
1413 | +偋 tdx
1414 | +佞 tec
1415 | +偆 tek
1416 | +俵 ter
1417 | +伅 tfa
1418 | +佢 tfd
1419 | +倷 tff
1420 | +俠 tfu
1421 | +俓 tgc
1422 | +偄 tgf
1423 | +伾 tgg
1424 | +傉 tgi
1425 | +傳 tgo
1426 | +優 tgr
1427 | +倆 tgv
1428 | +偡 thc
1429 | +儺 thj
1430 | +佈 thm
1431 | +備 thp
1432 | +屔 tid
1433 | +怤 tir
1434 | +佉 tja
1435 | +侾 tjb
1436 | +儥 tjm
1437 | +俧 tjr
1438 | +倰 tjt
1439 | +傫 tka
1440 | +偍 tkg
1441 | +偲 tkr
1442 | +俶 tlc
1443 | -齇 tln
1444 | +偵 tln
1445 | +佔 tlo
1446 | +佌 tlv
1447 | +僕 tlx
1448 | +儸 tma
1449 | +佒 tmf
1450 | +儂 tmh
1451 | +傰 tms
1452 | +倶 tng
1453 | -覑 tnj
1454 | +個 tnj
1455 | +僴 tnk
1456 | +側 tnl
1457 | -躺 tno
1458 | +傥 tno
1459 | +俱 tnt
1460 | +伵 tnv
1461 | +俁 toc
1462 | +俋 tod
1463 | +儼 toh
1464 | +伿 tot
1465 | +侶 tou
1466 | +儛 tpg
1467 | +侐 tpm
1468 | +俈 tpo
1469 | +倂 tpp
1470 | +傷 tps
1471 | +侁 tpv
1472 | +僁 tpx
1473 | - tqb
1474 | +㑇 tqb
1475 | +俬 tra
1476 | +偱 tre
1477 | +倕 trh
1478 | +佖 trp
1479 | -鵀 tru
1480 | +牐 tru
1481 | +顦 tsg
1482 | +侚 tsk
1483 | +牎 tsr
1484 | +乑 tst
1485 | +躹 tsx
1486 | -份 ttd
1487 | +爸 ttd
1488 | +爺 tth
1489 | -爻 tti
1490 | +儁 ttm
1491 | +爼 ttn
1492 | +犨 ttp
1493 | -雥 ttt
1494 | +儍 ttt
1495 | +伱 tuc
1496 | +牏 tul
1497 | +佡 tum
1498 | +牕 tur
1499 | +儈 tux
1500 | +儌 tuy
1501 | +倃 tvl
1502 | +佫 tvo
1503 | +傜 tvp
1504 | +僾 tvr
1505 | +俢 tvs
1506 | +俍 twb
1507 | +侒 twc
1508 | +倧 twf
1509 | +牗 twk
1510 | +儜 twm
1511 | +儴 two
1512 | +侂 twp
1513 | +傭 tws
1514 | +傛 twu
1515 | +併 txh
1516 | +傞 txi
1517 | +俤 txk
1518 | +傔 txl
1519 | +侻 txo
1520 | +佽 txq
1521 | +伭 tya
1522 | +儭 tyi
1523 | +儃 tyk
1524 | +傐 tym
1525 | +倣 typ
1526 | +億 tyr
1527 | +牓 tyy
1528 | +怮 uac
1529 | +樂 uai
1530 | +恈 uap
1531 | +慘 uau
1532 | +忣 uaw
1533 | +廹 ubd
1534 | +憰 ubt
1535 | +恊 ucc
1536 | +慣 uce
1537 | +惱 ucu
1538 | +皅 udb
1539 | +劒 udp
1540 | +愑 uds
1541 | +惤 udy
1542 | +悽 ueb
1543 | +皝 ueg
1544 | +慄 uei
1545 | +懴 uel
1546 | +忳 ufa
1547 | +恗 ufg
1548 | +恜 ufi
1549 | +慽 ufl
1550 | +懢 ufp
1551 | +愜 ufu
1552 | +憯 ufv
1553 | +愞 ugf
1554 | +逾 ugl
1555 | +懮 ugr
1556 | -魉 ugu
1557 | +會 ugx
1558 | +慬 uhe
1559 | +懾 uhh
1560 | +懽 uho
1561 | +墯 uhs
1562 | +恾 uhy
1563 | +惏 uii
1564 | +愩 uin
1565 | +梟 uiv
1566 | +懎 ujn
1567 | +慚 ujr
1568 | +懗 ujt
1569 | +恅 ujv
1570 | +慩 ujz
1571 | +鸔 uka
1572 | +愄 ukf
1573 | +鵿 ukh
1574 | +愰 ukn
1575 | +畠 ukt
1576 | +愒 uku
1577 | +懅 ulg
1578 | +歸 ulm
1579 | +怗 ulo
1580 | +皉 ulv
1581 | +憹 umh
1582 | +帛 umj
1583 | +愷 umo
1584 | +島 umv
1585 | +皚 umx
1586 | +惻 unl
1587 | +懼 unn
1588 | +慍 unu
1589 | +憫 uny
1590 | +悜 uoe
1591 | +悮 uof
1592 | +悁 uos
1593 | +怾 uot
1594 | +怳 uov
1595 | +斂 upp
1596 | - uqb
1597 | +㤘 uqb
1598 | +恑 uqg
1599 | +悗 uqo
1600 | +憺 uqt
1601 | +慏 uqy
1602 | +慟 ure
1603 | +悧 url
1604 | +憍 urm
1605 | +憏 usf
1606 | +恟 ust
1607 | +囪 usw
1608 | +斅 utb
1609 | +皥 ute
1610 | +恡 uth
1611 | +悅 uto
1612 | +惾 utt
1613 | +皊 uud
1614 | +恦 uuo
1615 | +皦 uup
1616 | +憿 uuy
1617 | +卽 uva
1618 | +兒 uve
1619 | +悂 uvj
1620 | +恉 uvk
1621 | +懓 uvr
1622 | +恌 uvx
1623 | +悰 uwf
1624 | +悾 uwi
1625 | +懭 uwk
1626 | +懷 uwm
1627 | -鶬 uwo
1628 | +創 uwo
1629 | +倉 uwp
1630 | +裊 uwy
1631 | +翶 uxc
1632 | +皏 uxh
1633 | +楽 uxi
1634 | +憐 uxq
1635 | +兠 uxv
1636 | +憞 uyb
1637 | +憻 uyk
1638 | +忼 uyq
1639 | +憶 uyr
1640 | +悷 uzj
1641 | +乿 vac
1642 | +猱 vbi
1643 | +懇 vbr
1644 | +獵 vcc
1645 | +鈔 vcp
1646 | +鏐 vcu
1647 | +鑞 vcz
1648 | -餟 vdd
1649 | +亂 vdd
1650 | +峱 vdm
1651 | +狓 vdp
1652 | +釵 vdw
1653 | +鋮 vfb
1654 | +鏗 vfd
1655 | +犽 vfy
1656 | +兪 vgc
1657 | +鋙 vgd
1658 | +毙 vgv
1659 | +頃 vgy
1660 | +銾 via
1661 | +虢 vil
1662 | +鉣 vja
1663 | +饒 vjg
1664 | +犾 vjq
1665 | +旨 vkv
1666 | +鉲 vll
1667 | +猇 vlq
1668 | +錹 vls
1669 | +鑼 vma
1670 | +錪 vmh
1671 | +爯 vmj
1672 | +獨 vml
1673 | +獧 vmr
1674 | +狽 vnb
1675 | +玁 vop
1676 | +餠 vpe
1677 | +鏼 vpi
1678 | +鷂 vpu
1679 | +猦 vqf
1680 | +愛 vqr
1681 | +錎 vqu
1682 | +銹 vra
1683 | +狐 vrg
1684 | +錘 vrh
1685 | +狥 vsk
1686 | +錋 vss
1687 | +鈞 vsx
1688 | +狑 vud
1689 | +猨 vvd
1690 | +餾 vvk
1691 | +猺 vvp
1692 | +饀 vvu
1693 | +鉖 vvz
1694 | -鑳 vwo
1695 | +鑲 vwo
1696 | +斵 vwr
1697 | +獷 vwt
1698 | +劉 vwv
1699 | +狖 vwx
1700 | +猐 vxc
1701 | +銻 vxk
1702 | - vzc
1703 | +䥇 vzc
1704 | +鈄 vze
1705 | +猟 vzf
1706 | +猵 vzm
1707 | +鎃 vzr
1708 | +寢 waq
1709 | +窓 war
1710 | +廄 wbq
1711 | +實 wce
1712 | +癰 wct
1713 | +廃 wdc
1714 | +宻 wdx
1715 | +癲 weg
1716 | +廟 wes
1717 | +庮 wey
1718 | +崈 wfm
1719 | -穿 wfy
1720 | +衺 wfy
1721 | +寕 wgm
1722 | +廌 wgs
1723 | +寬 whn
1724 | -祺 whq
1725 | +麒 whq
1726 | +廳 whr
1727 | -庹 whw
1728 | +襪 whw
1729 | +廂 win
1730 | +庫 wjc
1731 | +庬 wjs
1732 | +癨 wjt
1733 | +痩 wkd
1734 | +瘧 wlg
1735 | +襨 wli
1736 | +劘 wll
1737 | +褃 wls
1738 | +瘝 wmt
1739 | +廮 wnc
1740 | +廁 wnl
1741 | +廠 wnp
1742 | +襙 woi
1743 | +裐 wos
1744 | +疻 wot
1745 | +袮 wpc
1746 | +裇 wpm
1747 | +廡 wps
1748 | +審 wpx
1749 | -袲 wqq
1750 | +痑 wqq
1751 | +寏 wqt
1752 | +寃 wqv
1753 | +癁 wsv
1754 | +寯 wtm
1755 | +寑 wtq
1756 | -袵 wtr
1757 | +應 wtr
1758 | +襥 wtx
1759 | +癒 wur
1760 | +癡 wvl
1761 | +庼 wvm
1762 | +窰 wvp
1763 | +廞 wvq
1764 | +廀 wwd
1765 | +廘 wwl
1766 | +寵 wys
1767 | +寖 wzq
1768 | +纇 xag
1769 | +焌 xat
1770 | +冿 xbf
1771 | +燖 xbo
1772 | +燲 xcc
1773 | +熦 xct
1774 | +煆 xdd
1775 | +冺 xdf
1776 | +煝 xdn
1777 | +燈 xdo
1778 | +熥 xds
1779 | +糑 xdx
1780 | +焼 xeh
1781 | +烜 xek
1782 | +蠤 xel
1783 | +凴 xeq
1784 | +憑 xer
1785 | +凊 xes
1786 | +兿 xfe
1787 | +煃 xfj
1788 | +熸 xfv
1789 | +冴 xfy
1790 | +糥 xgg
1791 | +爄 xgh
1792 | +羥 xgi
1793 | +煏 xgo
1794 | +烣 xgx
1795 | +頩 xhg
1796 | +煠 xhi
1797 | +凘 xhj
1798 | +煐 xhm
1799 | +爤 xhn
1800 | +熯 xho
1801 | +凍 xik
1802 | +煉 xin
1803 | +凁 xio
1804 | -豢 xjg
1805 | +糯 xjg
1806 | +牶 xjp
1807 | +焃 xjt
1808 | +煋 xkp
1809 | +煟 xks
1810 | +焜 xkv
1811 | +燦 xld
1812 | +並 xlx
1813 | +炴 xmf
1814 | +斃 xmg
1815 | +糬 xmk
1816 | -弊 xmp
1817 | +憋 xmp
1818 | +燭 xms
1819 | +爛 xnn
1820 | +煱 xno
1821 | +燜 xnr
1822 | +焇 xns
1823 | +熌 xnu
1824 | +燘 xny
1825 | +焆 xos
1826 | +烸 xpc
1827 | +灹 xpf
1828 | +烻 xpl
1829 | +焅 xpo
1830 | +煥 xqt
1831 | +炘 xrj
1832 | +煄 xrk
1833 | -粍 xrm
1834 | +燻 xrm
1835 | +炂 xta
1836 | +凖 xte
1837 | +爍 xua
1838 | +凃 xui
1839 | +熗 xup
1840 | +熜 xuv
1841 | +煖 xve
1842 | +焝 xvf
1843 | +軰 xvj
1844 | +燰 xvr
1845 | +熖 xvu
1846 | +炵 xvz
1847 | +爌 xwk
1848 | +烢 xwp
1849 | +爊 xws
1850 | +爔 xxj
1851 | +覢 xxn
1852 | -禜 xxq
1853 | +嫈 xxq
1854 | +燉 xyb
1855 | +熇 xym
1856 | +凜 xyr
1857 | +焠 xyu
1858 | +玅 yac
1859 | +譏 yaf
1860 | +牽 yaq
1861 | +誜 yat
1862 | +詞 ybg
1863 | +誋 ydr
1864 | +誦 yds
1865 | -讍 yeo
1866 | +訶 yeo
1867 | +誆 yfe
1868 | +譖 yfv
1869 | +誱 ygb
1870 | +誙 ygc
1871 | +產 ygp
1872 | +彥 ygs
1873 | +謊 yhc
1874 | +諾 yhh
1875 | +諜 yhi
1876 | +譪 yhu
1877 | +諌 yik
1878 | +読 yjq
1879 | +竜 ykd
1880 | +讄 ykk
1881 | +贛 ykn
1882 | +畝 ykq
1883 | +畒 yku
1884 | +譵 ylj
1885 | +螤 ylu
1886 | -螤 ylw
1887 | +帟 ymj
1888 | +亶 ynk
1889 | +斕 ynx
1890 | -譂 yok
1891 | +亸 yok
1892 | +誨 ypc
1893 | +旜 ypk
1894 | +旓 ypn
1895 | +誅 ypt
1896 | +劥 yqc
1897 | +誔 yrb
1898 | +訢 yrj
1899 | +謐 yrp
1900 | +謅 yss
1901 | +斉 yte
1902 | +斎 ytf
1903 | +亱 ytk
1904 | +鳼 yun
1905 | +諀 yup
1906 | +亹 yuq
1907 | +譤 yuy
1908 | +誼 ywn
1909 | +譲 ywt
1910 | +詑 ywv
1911 | +誁 yxh
1912 | +竴 yxi
1913 | +啻 yxm
1914 | +謎 yxz
1915 | +譠 yyk
1916 | +辡 yyx
1917 | +泑 zac
1918 | +溋 zad
1919 | +滍 zag
1920 | +涾 zak
1921 | +滲 zau
1922 | +沇 zav
1923 | +湑 zbl
1924 | +潏 zbt
1925 | +湪 zcg
1926 | +漻 zcu
1927 | +漲 zde
1928 | +潠 zdh
1929 | +沄 zea
1930 | +沍 zec
1931 | +濆 zeh
1932 | +漧 zep
1933 | +濪 zeq
1934 | +灠 zfm
1935 | +漚 zfo
1936 | +浳 zfs
1937 | -沤 zft
1938 | +讴 zft
1939 | +浹 zfu
1940 | +潛 zfv
1941 | +灊 zfx
1942 | +溼 zga
1943 | +汧 zgh
1944 | +浭 zgk
1945 | +瀝 zgr
1946 | +漘 zgs
1947 | +滆 zgx
1948 | +濛 zhg
1949 | +渃 zhh
1950 | +淽 zhl
1951 | +灡 zhn
1952 | +濸 zhp
1953 | +淓 zhy
1954 | +潔 zid
1955 | +溎 zij
1956 | +涍 zjb
1957 | +漸 zjr
1958 | +淩 zjt
1959 | +澪 zjw
1960 | +漣 zjz
1961 | +浬 zke
1962 | +淏 zkf
1963 | +滉 zkn
1964 | +洩 zkp
1965 | +溿 zkx
1966 | +渂 zky
1967 | +淲 zlq
1968 | +濬 zlu
1969 | +灩 zma
1970 | +澂 zme
1971 | +漄 zmj
1972 | +溦 zmq
1973 | +濁 zms
1974 | +漼 zmt
1975 | +澤 zmx
1976 | +濎 zna
1977 | +潤 zne
1978 | +澗 znk
1979 | +測 znl
1980 | +瀾 znn
1981 | +濶 znr
1982 | +浧 zoe
1983 | +濈 zoh
1984 | +溳 zon
1985 | +啟 zop
1986 | +棨 zpi
1987 | +晵 zpk
1988 | +澨 zpu
1989 | +泆 zpw
1990 | -泶 zqa
1991 | +沒 zqd
1992 | +溕 zqg
1993 | +滘 zqi
1994 | +涏 zrb
1995 | +涶 zrh
1996 | +湩 zrk
1997 | +浰 zrl
1998 | +潻 zru
1999 | +瀓 zse
2000 | +漈 zsf
2001 | +淍 zsj
2002 | +漇 zsl
2003 | +泃 zso
2004 | +淴 zss
2005 | +汋 zsw
2006 | +渹 zsy
2007 | +浟 ztk
2008 | +涗 zto
2009 | +滺 ztp
2010 | +涖 zty
2011 | +湶 zua
2012 | +澙 zuc
2013 | - zuj
2014 | +䦷 zuj
2015 | +淿 zum
2016 | +滄 zup
2017 | -认 zuu
2018 | +闪 zuu
2019 | -沦 zuv
2020 | +论 zuv
2021 | +涭 zvq
2022 | +泈 zvz
2023 | +洝 zwc
2024 | +浤 zwh
2025 | +漥 zwj
2026 | +濘 zwm
2027 | +瀼 zwo
2028 | +浶 zwp
2029 | +涴 zwq
2030 | +淧 zwr
2031 | +瀉 zws
2032 | +溇 zxc
2033 | +溓 zxl
2034 | +澻 zxr
2035 | +湙 zyf
2036 | +涙 zzf
2037 | +淚 zzj
2038 | ```
2039 |
2040 |
2041 | ## 0.6.11
2042 |
2043 | - 修订一批错码和拆分。
2044 | - 加入扩展 G 区字。
2045 | - 优化调整一些简码词组(见下方)。
2046 | - 码表的单字 GB18030 区的排序改用邢红兵博士 25 亿字语料字频表,该表含 14975 字。
2047 | - 修改按键绑定配置写法,避免「,.」键的绑定。
2048 | - 取消一批收益较小的置换码设置,即「统双屋醉碎默忧叔固尚悄」取消二简并恢复原来
2049 | 的简码,「羽刀弓酉頁巾臼齒見門鳥」取消扩展码并恢复二码首选位,其他因连锁关系而
2050 | 改动的三简字也改回。
2051 | - 增加一批字根扩展码,这些字根原本就不在首选位,现在只是赋予其一组免选重编码。
2052 | - 修改 `recoginzer/patterns/reverse_lookup`,解决与连打模式的冲突。(解决
2053 | issue1)
2054 | - FAQ 新增关于基础配置文件的内容。
2055 | - 关于五二顶方案的说明,更具体和详细地介绍其概念和性能,增加对区重补码由来的说
2056 | 明,增加最佳实践的说明,删除关于学习时机的观点。
2057 |
2058 |
2059 | 简码和置换码调整点击展开详情
2060 |
2061 | ```
2062 | -我就 p
2063 | +生活 p
2064 | -得很 s
2065 | +包括 s
2066 | -家里 w
2067 | +应该 w
2068 | -道理 x
2069 | +关系 x
2070 | -没事 z
2071 | +认为 z
2072 | -统 cy
2073 | +羽 cy
2074 | -双 dd
2075 | +刀 dd
2076 | -屋 dg
2077 | +弓 dg
2078 | -醉 ey
2079 | +酉 ey
2080 | -碎 gy
2081 | +頁 gy
2082 | -叔 lc
2083 | +齒 lc
2084 | -默 mj
2085 | +巾 mj
2086 | -固 nj
2087 | +見 nj
2088 | -尚 nm
2089 | +門 nm
2090 | -吴 of
2091 | +呀 of
2092 | -忧 uj
2093 | +臼 uj
2094 | -悄 un
2095 | +鳥 un
2096 | -以往 cs
2097 | +纪律 cs
2098 | -功能 ia
2099 | +才能 ia
2100 | -上路 lo
2101 | +鉴别 lo
2102 | -外出 qa
2103 | +写出 qa
2104 | -风味 qo
2105 | +名叫 qo
2106 | -行业 sl
2107 | +彼此 sl
2108 | -容易 wk
2109 | +家里 wk
2110 | -应该 wz
2111 | +广泛 wz
2112 | -关系 xp
2113 | +首先 xp
2114 | -参考资料 aj
2115 | +马克思 aj
2116 | -及格 aw
2117 | +及其 aw
2118 | -随时随地 bk
2119 | +那时候 bk
2120 | -约为 cs
2121 | +约束 cs
2122 | -截至 ef
2123 | +现成的 ef
2124 | -醉酒 ey
2125 | +玩意儿 ey
2126 | -指南 fv
2127 | +批评 fv
2128 | -更新 gk
2129 | +更加 gk
2130 | -薪酬 hy
2131 | +共产党 hy
2132 | -功效 ic
2133 | +功能 ic
2134 | -杜绝 ij
2135 | +想起来 ij
2136 | -显示 kl
2137 | +显著 kl
2138 | -削减 ns
2139 | +削弱 ns
2140 | -呼吁 op
2141 | +呼吸 op
2142 | -跑马 os
2143 | +跑到 os
2144 | -跳梁小丑 oz
2145 | +中学生 oz
2146 | -包括 sd
2147 | +包含 sd
2148 | -仆人 tl
2149 | +侦察 tl
2150 | -会员 ue
2151 | +情感 ue
2152 | -惧怕 un
2153 | +悄悄 un
2154 | -容量 wu
2155 | +容易 wu
2156 | -精神 xw
2157 | +精神 xe
2158 | -首先 xt
2159 | +道理 xt
2160 | -善用 xx
2161 | +善于 xx
2162 | -认为 zu
2163 | +认识 zu
2164 | -陼 bjk
2165 | +畫 bjk
2166 | +统 cyv
2167 | +双 ddo
2168 | +屋 dga
2169 | +醉 eye
2170 | -磖 gcu
2171 | +匹 gcu
2172 | +碎 gyu
2173 | -蓿 hwg
2174 | +蘑 hwg
2175 | -桧 iue
2176 | +栓 iue
2177 | +叔 lcd
2178 | +默 mjq
2179 | -骷 njg
2180 | +固 njg
2181 | -敞 nmo
2182 | +尚 nmo
2183 | -呕 oft
2184 | +啦 ofy
2185 | -鱮 qug
2186 | +悄 uns
2187 | -羽 cyv
2188 | -刀 ddo
2189 | -弓 dga
2190 | -酉 eye
2191 | -頁 gyu
2192 | -齒 lcd
2193 | -巾 mjq
2194 | -見 njgw
2195 | -門 nmov
2196 | -臼 ujo
2197 | +卩 aefm
2198 | +厶 aii
2199 | +爿 app
2200 | +糸 avei
2201 | +廴 bdg
2202 | +阝 bvfu
2203 | +纟 cjoj
2204 | +韋 dwzu
2205 | +镸 ecug
2206 | +扌 fvkv
2207 | +丌 hjvq
2208 | +艹 hvjq
2209 | +朩 iuez
2210 | +爾 jegz
2211 | +丂 jkb
2212 | +刂 lda
2213 | +虍 lhi
2214 | +罒 mwf
2215 | +鬥 ndfq
2216 | +囗 nwi
2217 | + ozo
2218 | +钅 pjic
2219 | +牜 pnh
2220 | +饣 qiv
2221 | +灬 shkv
2222 | +彳 srn
2223 | +勹 suez
2224 | +乂 tigu
2225 | +㐅 tigu
2226 | +亻 tvi
2227 | +僉 uqd
2228 | +忄 uvi
2229 | +犭 vqdo
2230 | +豸 vzu
2231 | +衤 wig
2232 | +礻 wsfs
2233 | +冫 xsld
2234 | +為 xwbm
2235 | +辶 zdjy
2236 | +氵 zvov
2237 | ```
2238 |
2239 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Rime 徐码输入方案
2 |
3 | [发布地址](https://github.com/Ace-Who/rime-xuma) ·
4 | [项目主页](https://ace-who.github.io/rime-xuma/) ·
5 | [更新日志](CHANGELOG.md) ·
6 | [徐码文档](https://www.xumax.top) ·
7 | [徐码五二顶](misc/五二顶)
8 |
9 | [Rime 输入法软件](https://rime.im/)
10 |
11 | [TOC]
12 |
13 | ## 前言
14 |
15 | 徐码简繁通打输入法,又名爾雅简繁通打输入法。这是一个初学者为了让自己用最舒服的
16 | 姿势学会徐码而设计的用于 Rime 平台的方案,和在熟练后为更高效打字而设计的一些衍
17 | 生方案。
18 |
19 | 配置和使用中可能遇到的大多数问题,答案都在本说明中,请仔细查阅。如果找不到答案
20 | ,欢迎提交 issue 反馈。
21 |
22 | 特色功能「三重注解」:
23 |
24 | - 字根拆分 + 编码 + 拼音。
25 | - 支持词组拆分(按照官方词组编码规则)。
26 | - 大码大写、全简合一。
27 | - 标点和[符号][`symbols.yaml`]也显示徐码编码。
28 |
29 | [`symbols.yaml`]: https://github.com/rime/rime-prelude/blob/master/symbols.yaml
30 |
31 |
32 | 
33 |
34 | 
35 | 
36 |
37 | 方案自带说明:
38 |
39 | 
40 |
41 | 快捷键演示:
42 |
43 | 
44 |
45 | ## 配置说明(已经很短的)
46 |
47 | 1. 下载[最新发布][],将 schema 目录下的「所有」文件(注①)放到 rime [用户目录][]。
48 | 1. - 若直接修改配置文件添加方案,应该不需要说明,记得重新部署。
49 | - 若通过图形界面设定输入法,在设定中添加所需方案,确定后一般会自动部署。
50 |
51 | 可选方案:
52 |
53 | - 徐码·QS:适合新手和大部分人。候选垂直排列,每页五个;启用编码补全。
54 | - 徐码·QS·一型:适合追求界面简洁者。候选水平排列,每页三个;禁用编码补全;内嵌输入码。
55 | - 徐码五二:提高单字效率。延迟顶功版本,二码字免空格。不改变编码,完全兼容常规版方案。详情参阅「[徐码五二](misc/五二顶)」。
56 | - 其他方案:均为伪方案或辅助方案,不可直接使用。
57 |
58 | [最新发布]: https://github.com/Ace-Who/rime-xuma/releases/latest
59 | [用户目录]: https://github.com/rime/home/wiki/UserData
60 |
61 | 注①:`xuma.extended.dict.yaml` 用于用户添加个人词库,内含用法说明,更新时请备份并保留该文件,以免丢失个人词库。
62 |
63 | 注②:iRime 的配置方法或许有些不同,请另外寻找说明。我自己没有成功部署,原因未知。
64 |
65 |
66 | ## 功能介绍
67 |
68 | 重点总结:
69 |
70 | - 三重注解、双重反查,为徐码初学者(我)扫除障碍。
71 | - 固定词序和自造词动态调序兼得,两全其美。
72 | - 还可一键屏蔽词组,同时满足单字派和词组派。
73 | - 全码后置:出简亦出全,但是将有简码的单字在全码重码时放到后面,实现避重。
74 |
75 | 可即时开关或变更的功能:
76 |
77 | - 【三重注解】:参考演示。默认开启。
78 | - 【全拼反查】【五笔画反查】【双重反查】。
79 | - 【屏蔽词组】:默认关闭。
80 | - 【字集切换】:GB2312、GBK(默认)、BIG5、UTF-8(全字集)。
81 | - 【显示时钟】:默认关闭。
82 | - 【繁体简化】:即繁入简出。默认关闭。
83 | - 【简入繁出】:默认关闭。
84 | - 【全码后置】:简码单字排序靠前,全码重码时降低排序,让位于无简码字词。默认开
85 | 启。
86 |
87 | 固定特性:
88 |
89 | - 内置词顺序固定:固态词典中的字词,永远置顶且顺序固定。
90 | - 自造词自动调序:用户词典中的词组,最近常用者排序靠前。
91 | - 简码词组次三选:所有一级简码词组和二级简码词组保证排在候选的第二位和第三位。
92 | - 重复历史上屏:输入 `dl`。
93 | - 支持手动造词:只需以单引号 `'` 或反撇号 `` ` `` 分隔输入串。
94 | 如:欲造「手动造词」,输入 `rs'ea'poz'zb` 后依次选字即可。
95 | 如果已存在词组「手动」和「造词」,也可输入 `rsea'pozb`。
96 | (目前方案将 `'` 绑定为数字 3 用来选重了,所以只能用 `` ` ``。)
97 | - 支持自动造词:(现已不启用,启用方法是将
98 | `xuma_qshare.schema:/translator/encode_commit_history` 的值改为 `true`。)
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 | - Ctrl + Shift + 4:繁体简化
127 | - Ctrl + Shift + F:简入繁出
128 | - Ctrl + C:三重注解,仅输入状态可用。
129 | - Ctrl + Shift + C:
130 | 「〇→一重→二重→三重」注解模式轮换,仅输入状态可用。
131 | - Ctrl + S:屏蔽词组,仅输入状态可用。
132 | - Ctrl + T:显示时钟,仅输入状态可用。
133 | - Ctrl + D:
134 | 预显候选,即显示输入码分段所对应的两个候选,顶功专用,仅输入状态可用。
135 | - F4 / Ctrl + \`:
136 | 方案选单,可控制以上所有开关和字符集选择、全码后置。
137 | 这是 Rime 内置的快捷键,更多内置功能请参考 [Rime 使用说明][RimeUserGuide]。
138 |
139 | [RimeUserGuide]: https://github.com/rime/home/wiki/UserGuide
140 |
141 | 通过 `F4` 选单切换「漢字/汉字」,可记忆简化字开关,通过快捷键切换则不记忆。
142 |
143 | 功能引导串:
144 |
145 | - `dl`:调出历史上屏。
146 | - `` ` ``:双重反查(全拼 + 五笔画)。
147 | - `` `P``:全拼反查。
148 | - `` `B``:五笔画反查(横h 竖s 撇p 捺/点n 折z)。
149 | - `env/`:获取系统环境变量,后跟变量名。
150 | - `help/`:查看本方案简要使用说明。
151 |
152 | 技巧提示:
153 |
154 | - 使用拼音反查时,默认排序以繁体优先,可通过切换「繁体简化」来改变,同时「简入
155 | 繁出」应当是关闭的。
156 |
157 | 
158 | 
159 |
160 | 更多细节演示:
161 |
162 | 
163 |
164 | 
165 |
166 | ## 数据来源
167 |
168 | 原始码表由徐码作者徐国银先生提供,含九万多字和约八万简繁词组,经过排序整理,还
169 | 在持续修订维护中。
170 |
171 | 字根拆分原始数据由 QQ 徐码输入法官方群(218210590)小鸮(1360057135)提供。
172 | 拼音数据来自 [Mozillazg 整理的汉典数据](https://github.com/mozillazg/pinyin-data)。
173 |
174 | ## 关于简码
175 |
176 | ### 单字简码
177 |
178 | 官方码表的简码设置有优化空间,我参考汉语字频统计资料作了修改。徐码的简码设置原
179 | 则之一,是简码不占用全码汉字的编码,我基本遵循这个原则,字频表收录的 14000 余字
180 | 中,一字若无简码,则其全码不设置为其他字的简码。
181 |
182 | 举一个修改的例子:「没」「为」二字同为高频字且频率相近,「为」字设置了一级简码
183 | `z`,而「没」字没有简码,其全码 `zqs` 指法很难,但是二简 `zq` 上又有高频字「学
184 | 」。所以最好的做法是将 `z` 让给「没」字,将中频字「沙」的二简 `zc` 让给「为」,
185 | 将低频字「娑」字的三简 `zcp` 让给「沙」。
186 |
187 | 另一例:「然」「得」二字同为高频字且频率相近,分别设置了简码 `sj` 和 `s`,改为
188 | `s` 和 `sk` 则可空余出 `sj`,来分配给次高频字「周」。
189 |
190 | 以下仅列出一级简码单字的修改:
191 |
192 | | 编码 | 修改前 | 修改前 | 修改后 | 修改后 |
193 | | ---- | ------ | ------ | ------ | ------ |
194 | | `a` | 出 `a aau` | 能 `asv` | 出 `aa aau` | 能 `a asv` |
195 | | `h` | 在 `h hkjv` | 有 `hsv` | 在 `hk hkjv` | 有 `h hsv` |
196 | | `m` | 同 `m mgov` | 见 `mve` | 同 `mg mgov` | 见 `m mve` |
197 | | `n` | 国 `n neww` | 当 `nbu` | 国 `ne neww` | 当 `n nbu` |
198 | | `z` | 为 `z zcl` | 没 `zqs` | 为 `zc zcl` | 没 `z zqs` |
199 | | `s` | 得 `s skir` | 然 `sj sjsh` | 得 `sk skir` | 然 `s sjsh` |
200 |
201 | 单字简码不设重,仅有两个例外:「啊」为 `o` 的三选,「们」为 `t` 的三选。
202 |
203 | 随着本方案的更新,简码也可能发生新的修改,请知悉。
204 |
205 | ### 词组简码
206 |
207 | 词组简码只设一简和二简,都是两重,固定为次选和三选。对于二简词组,第一重的取码
208 | 为前两字的首码,第二重的取码为其理论全码的前两码。三字以上的词组,两种取码的结
209 | 果相同。该取码方式与官方码表相同,具体选词已经过全面修改。
210 |
211 | ### 二简置换码
212 |
213 | 这是一个旨在提高效率的设计,是本方案组中唯一对初学者不太友好的设计,请着重阅读并理解。
214 |
215 | 现已将大多数字根编码位设置为较高频字的二级简码,从而使二码字总体频
216 | 率提高 5.1 个百分点。坏处是二简字与成字字根重码,导致打该字根需要选重(在没有屏
217 | 蔽词组的情况下,是第四候选),如「`bg` 司 艮」「 `qs` 解 殳」「`tp` 作 片」等。
218 | 为此引入「置换码」来系统性地解决这个问题。举例说明,「司」原来的简码是 `bgo`,
219 | 现将它与「艮」的编码 `bg` 置换,即从「`bg` 艮」「`bgo` 司」变成「`bg` 司 艮」「
220 | `bgo` 艮」,两字和以前一样无需选重。称 `bgo` 为「艮」的「字根扩展码」。又如,「
221 | 殳」的扩展码是「解」的全码 `qsdp`,「片」的扩展码是「作」的全码 `tpl` 。置换码
222 | 以规则的方式为成字字根设置特殊码,是一种「规则的不规则」,既解决了重码选字问题
223 | ,又无须强记,因为对应的二简字本身就是编码提示。
224 |
225 | 置换码的对象是根据字频数据精选的,以求变动小、效果大,目前包括约 50 个成字字根
226 | 。再次提醒,它们仍然可以使用原来的编码输入,只是需要选重,而字根扩展码是一个附
227 | 赠的无需选重的编码。
228 |
229 | ## 常见问题
230 |
231 | **部署失败——主要方案未能识别**
232 | 答:目前已知一种情况:`v0.6.8` 及之前一段时间的版本的配置,强制引用基础配置文件
233 | [`key_bindings.yaml`][] 文件,而这些文件在有的 Rime 发行版中或没有预置,或被删
234 | 除,或需要通过软件选项恢复(如同文)。其他情况:尝试重装 Rime 程序。尝试
235 | [旧版发布][]。
236 |
237 | [`key_bindings.yaml`]: https://github.com/rime/rime-prelude/blob/master/key_bindings.yaml
238 | [旧版发布]: https://github.com/Ace-Who/rime-xuma/releases
239 |
240 | **配置之后打不出汉字怎么办?**
241 | 答:尝试一次「重新部署」。重装 Rime 程序。尝试[旧版发布][]。
242 |
243 | **为什么有些候选词显示为方块或空白?**
244 | 答:你使用的字体没有收取这个字。
245 |
246 | **为什么不显示三重注解,无法屏蔽词组、显示时钟、后置全码单字?**
247 | 答:这几个功能是通过 lua 插件实现的,而一些 Rime 发行版不支持 lua 插件,有条件
248 | 可尝试更新。另参考 librime-lua 作者的[解释][lua's popularity]。可向发行版开发者
249 | 建议以推动实现对 librime-lua 的支持。同文的正式版不支持,测试版已支持。
250 |
251 | [lua's popularity]: https://github.com/hchunhui/librime-lua/issues/22
252 |
253 | **为什么安卓同文输入法不能反查?**
254 | 答:同文输入法官方版可能没有打包预置方案,而反查功能依赖[朙月拼音][]和
255 | [五筆畫][]方案。可自行下载并重新部署。
256 |
257 | [朙月拼音]: https://github.com/rime/rime-luna-pinyin
258 | [五筆畫]: https://github.com/rime/rime-stroke
259 |
260 | **为什么 `Ctrl+Shift+4` 等快捷键不起作用?**
261 | 答:部分快捷键不是直接在方案中定义,而是引用基础配置文件 [`default.yaml`][] 或
262 | [`key_bindings.yaml`][] 的定义。而这些文件在有的 Rime 发行版中或没有预置,或被
263 | 删除,或需要通过软件选项恢复(如同文)。
264 |
265 | [`default.yaml`]: https://github.com/rime/rime-prelude/blob/master/default.yaml
266 | [`key_bindings.yaml`]: https://github.com/rime/rime-prelude/blob/master/key_bindings.yaml
267 |
268 | **为什么输入 `/jt`、`/fh` 等不能打出符号?**
269 | 答:由斜杠「/」引导的符号定义在基础配置文件 [`symbols.yaml`][] 中。有的 Rime
270 | 发行版,没有打包这个文件或被删除,可自行下载或使用软件选项来恢复文件(如同文)
271 | ,并重新部署。
272 |
273 | **如何删除用户词?**
274 | 答:删除特定用户词:输入该词编码,移动光标选中该词,敲删词键 Ctrl +
275 | Delete 或 Shift + Delete (Mac OS 用
276 | Shift + Fn + Delete),默认还绑定了
277 | Ctrl + K。删除整个用户词典:先退出输入法程序或算法服务,
278 | 然后删除用户目录下的 `xuma.userdb` 目录,再启动输入法。
279 |
280 | **为什么码表更新后,有的字用新的编码打不出来?**
281 | 答:需要「重新部署」。
282 |
283 | **为什么码表更新后,有的字还能用旧编码打出来?**
284 | 答:需要「重新部署」。如果以前用旧编码打过这个字,那么它还被记录在用户词典中,
285 | 即是一个用户词,可用删除用户词的方法删除之。
286 |
287 | **我可以修改方案名称吗?**
288 | 答:方案名称由配置文件 `.schema.yaml` 的 `schema/name` 节点定义,可
289 | 自由修改,但除非懂得定制方法,不要修改 `schema_id` 或任何文件的名称或路径。
290 |
291 | **`lua/ace/data/xuma_spelling.reverse.bin` 文件是什么?**
292 | 答:这是 v0.4 中预编译的三重注解词典,从 v0.5 起不再使用,可以删除。
293 |
294 | **如何记忆字根?**
295 | 答:这个问题本来与本项目无关,但是我碰巧解决过,可以看[这里][Anki]。为方便初学
296 | 者,解决方案也打包在本项目中了。这是一个利用碎片时间即可在累计三小时内识记字根
297 | 的办法,如果你对于学习徐码的疑虑主要在于字根记忆的难度,那么不妨先花一个月时间
298 | ,每天三五分钟,在不知不觉中初步解决这个问题,再决定是否正式开始学习。
299 |
300 | [Anki]: https://github.com/Ace-Who/rime-xuma/tree/master/misc/anki
301 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-slate
--------------------------------------------------------------------------------
/demo/encode_commit_history_01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/encode_commit_history_01.png
--------------------------------------------------------------------------------
/demo/encode_commit_history_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/encode_commit_history_02.png
--------------------------------------------------------------------------------
/demo/encode_commit_history_03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/encode_commit_history_03.png
--------------------------------------------------------------------------------
/demo/encode_commit_history_04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/encode_commit_history_04.png
--------------------------------------------------------------------------------
/demo/encode_commit_history_05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/encode_commit_history_05.png
--------------------------------------------------------------------------------
/demo/encode_commit_history_06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/encode_commit_history_06.png
--------------------------------------------------------------------------------
/demo/environment_variable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/environment_variable.png
--------------------------------------------------------------------------------
/demo/help.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/help.gif
--------------------------------------------------------------------------------
/demo/help.page1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/help.page1.png
--------------------------------------------------------------------------------
/demo/help.page2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/help.page2.png
--------------------------------------------------------------------------------
/demo/reverse_lookup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/reverse_lookup.png
--------------------------------------------------------------------------------
/demo/reverse_lookup_simplified.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/reverse_lookup_simplified.png
--------------------------------------------------------------------------------
/demo/reverse_lookup_traditional.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/reverse_lookup_traditional.png
--------------------------------------------------------------------------------
/demo/shortcut_keys.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/shortcut_keys.gif
--------------------------------------------------------------------------------
/demo/symbols_jt_comment_xuma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/symbols_jt_comment_xuma.png
--------------------------------------------------------------------------------
/demo/symbols_xz_comment_xuma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/symbols_xz_comment_xuma.png
--------------------------------------------------------------------------------
/demo/tripple_comment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/tripple_comment.png
--------------------------------------------------------------------------------
/demo/user_dict_comment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/demo/user_dict_comment.png
--------------------------------------------------------------------------------
/misc/anki/Anki记忆卡片_徐码字根+一简_20201222.apkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/misc/anki/Anki记忆卡片_徐码字根+一简_20201222.apkg
--------------------------------------------------------------------------------
/misc/anki/README.md:
--------------------------------------------------------------------------------
1 | # 如何记忆徐码字根——科学偷懒,无痛记忆
2 |
3 | ## 字根需要背吗?
4 |
5 | 不一定。学习者可以边查边打,在这个过程中自然地记住字根。
6 |
7 | ## 记熟字根就能打字如飞吗?
8 |
9 | 不能,如你所知。但是为什么不能?回答这个问题能帮助我们理解记忆字根的作用和局限
10 | 性,从而准确评估其收益。
11 |
12 | ## 记熟字根的作用和局限性是什么?
13 |
14 | 在形成条件反射之前,打一个字的过程,可分解为三个步骤:
15 |
16 | 1. 拆出字根。也就是「汉字→字根」。
17 | 2. 译出根码。也就是「字根→根码」。
18 | 3. 组成字码。也就是「根码→字码」。
19 |
20 | 这个划分是逻辑的,而不是时间的。它们不是严格按顺序执行的,而是相互交织的,所以
21 | 将「步骤」理解为「子任务」更准确。
22 |
23 | 以「字」字为例,这三个步骤是:
24 |
25 | 1. 将「字」拆分为字根「宀子」。
26 | 2. 将「宀子」翻译为它们的编码「Wv Bz」。(实际打字时小码是按需译出,未必全译。)
27 | 3. 用「Wv Bz」来组装出「字」的编码「WBz」。
28 |
29 | - 步骤 1 要求「判断哪些部件是字根」,也要求熟悉字形和掌握方案规则。
30 | - 如果「记熟字根的编码」,就完全解决了步骤 2。
31 | - 步骤 3 要求掌握输入法方案规则,与记忆字根无关。
32 |
33 | 这里顺便也分解了「记忆字根」这个任务,它是分为「判断给定部件是不是字根」和「回
34 | 忆给定字根的编码」两个子任务的。前者参与了步骤 1,后者则是步骤 2 的全部。
35 |
36 | ## 熟记字根的收益和成本是什么?
37 |
38 | 收益:
39 |
40 | - 记熟字根在打字过程中所起作用较大。
41 | - 徐码字根多,且为双编码,记忆量大,若能熟记,就攻克了一个难点。
42 |
43 | 成本:
44 |
45 | - 利用碎片时间,每天三分钟,累计三小时或更短。
46 |
47 | ## 「三小时熟记字根」的方法在哪里?
48 |
49 | 是最「笨」的方法——回忆测试、间隔重复。以下是此方法的一种形象说明,其中的数字
50 | 并不准确。
51 |
52 | 准备四个盒子和一堆卡片,正面写上字根,背面写上编码。每天拿出 20 张,看正面的字
53 | 根,回忆编码是什么,然后翻面看答案。用如下方法「给自己打分」:
54 |
55 | 1. 如果想不起来或记错了,就把它放在盒子 1 里。
56 | 1. 如果模棱两可或很久才想起来,就放在盒子 2 里。
57 | 1. 如果较顺利地想起来,就放在盒子 3 里。
58 | 1. 如果不假思索就想起来,就放在盒子 4 里。
59 |
60 | 然后,根据得分决定什么时候复习哪些盒子里的卡片,即重复以上看正面忆背面的过程:
61 |
62 | 1. 盒子 1 里的,1 分钟后复习。
63 | 1. 盒子 2 里的,1 天后复习。
64 | 1. 盒子 3 里的,3 天后复习。
65 | 1. 盒子 4 里的,7 天后复习。
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 | 通过 Anki,一个基于「[回忆测试-间隔重复][Anki主动回忆测试]」学习法的开源软件,
92 | 「让记忆变得轻松」。
93 |
94 | [Anki主动回忆测试]:
95 |
96 | 前面用实体卡片来形象说明遗忘曲线记忆法的基本规则。它不够方便,且其中的复习间隔
97 | 时间并不准确,也不应是四个固定值。一个典型的卡片,首次复习在 10 分钟后,下一次
98 | 在 1 天后,下一次在 1 周后,然后是 1 个月后,3 个月后……只要重复七次——遇到难
99 | 记的,无非多几次——即可终生不忘。加上一两个月后你已经在打字了,打字时会更频繁
100 | 地回忆字根,卡片记忆便退居为辅助手段了。
101 |
102 | 间隔多久,关键是要在即将遗忘时,科学偷懒,用最少的精力记住学习材料。这个时间是
103 | 通过历史复习情况来计算的,所以一定要如实给自己打分。而具体如何「计算」,这个算
104 | 法已经内置在 Anki 中了,每天要复习哪些卡片,Anki 自动安排妥当。除了算法,Anki
105 | 也提供了卡片管理系统,通过它,你可以在电脑和手机上创建、编辑和管理卡片。
106 |
107 | 前面的实体盒子和卡片在 Anki 中都有对应物,操作简单。四个盒子的对应物就是四个打
108 | 分按钮,用来向软件报告自己的记忆程度。亲自制作卡片是很有好处的,能让你获得初始
109 | 记忆。但是鉴于初学者对于如何打出或表示出部分字根有着实际困难,我直接提供了我的
110 | 卡片组。这个卡片组也是在徐码官方群的群友的帮助下完成的。我花了一个半小时做好这
111 | 组卡片,再花两个半小时学习它,累计只花了几个小时解决字根记忆的任务。这两个半小
112 | 时都是碎片时间,可以说是无痛完成任务。
113 |
114 | 要采用此方法,可前往 [Anki][Anki] 或 [Anki 中国][Anki中国] 了解和下载软件,安装
115 | 后导入我的卡片组即可开始学习。手机也可下载应用。注册一个 Anki 账号,多设备登录
116 | 可自动同步卡片和学习进度,随时随地接续学习。
117 |
118 | [Anki]: https://apps.ankiweb.net/
119 | [Anki中国]: http://www.ankichina.net/
120 |
121 | 注意:字根中多有生僻字,字体不支持的会显示为方块或空白。手机字体各不相同,总的
122 | 说来,支持的字库比电脑小。针对这个现实,我对同一字根采取了冗余描述,如草头表示
123 | 为「艹卄⺾⺿」,只要能显示其中之一即可。不过即便如此,有的手机也不能显示任何文
124 | 字。
125 |
--------------------------------------------------------------------------------
/misc/五二顶/README.md:
--------------------------------------------------------------------------------
1 | # 徐码五二顶说明书
2 |
3 | ## 什么是五二顶
4 |
5 | 四码限长方案的用户应该都熟悉「五码顶屏」的打法,即输入缓冲区每积至五码就顶出前
6 | 四码,上屏其第一候选,留下最后一码,目的是省略四码字后面的空格。然而,对于单字
7 | 派,四码字的频率很低,五笔和郑码约为 3%,徐码更低一些,所以节省的空格对效率的提
8 | 升作用很小。在徐码中,二码字的频率才是最高的,文章一般超过 40%。所以,最当节省
9 | 的是二码字的空格。为达此目的,需将原常规方案改造为「五二顶」。改造对象仅仅是编
10 | 码顶屏的逻辑,完全不触及编码规则,因此原封不动地保持徐码的字集和编码。它的核心
11 | 变化,仅仅是五码顶屏时顶出的是前二码,留下的是后三码。
12 |
13 | ## 适合人群
14 |
15 | 如前所述,五二顶的效率源自二码字的高比例,它适合单字派和小词库派,不适合词组派:
16 |
17 | - 词组打得越多,二码字比例就越低,就越抑制五二顶优势的发挥。
18 | - 当词组为第一候选时,若非后接标点,则仍须用空格上屏,所以键长比常规方案增加了 1。
19 | - 当词组为第二或第三候选时,不能用 `;` 和 `'` 选重,因为它们被用作上屏码(后详),专用于一码和二码的二三选;所以指法更差。
20 |
21 | ## 效率分析
22 |
23 | 经「科学形码评测系统v1.6.3」测试,前 `300/1500/6000` 字的加权键长依次为
24 | `2.14/2.53/2.61`。(需要把「的」字改为一键顶屏字,否则结果是 `2.20/2.57/2.65`。
25 | 实际使用不是通过码表定义,而是在方案中通过配置标点实现,由于标准键盘已无空余的
26 | 理想键位可用,本方案暂不便提供通用配置。)
27 |
28 | | 编码方案 | 前 300 加权 | 前 1500 加权 | 前 6000 加权 |
29 | | ---------- | ------ | ------ | ------ |
30 | | 可可五笔86 | `2.95` | `3.19` | `3.23` |
31 | | 郑码 | `2.90` | `3.16` | `3.20` |
32 | | 张码 | `2.91` | `3.14` | `3.18` |
33 | | 徐码 | `2.91` | `3.15` | `3.19` |
34 | | 徐码QS | `2.81` | `3.07` | `3.12` |
35 | | 徐码五二¹ | `2.20` | `2.57` | `2.65` |
36 | | 徐码五二² | `2.14` | `2.53` | `2.61` |
37 |
38 | 可以看到,诸四码限长方案的差距仅在 `2%` 以内。相比于我的个人徐码码表,五二顶的加
39 | 权键长(按不配置一键顶屏字「的」计)缩短了 `22%/16%/15%`,即后者键长为前者的
40 | `78%/84%/85%` ,在同样击键速度的条件下,打字速度比值是其倒数,即
41 | `128%/119%/118%`。若与官方码表相比,则这组数字是 `132%/123%/120%`。不过考虑到指
42 | 法,空格键优于全体按键的平均水平,节省大量空格之后剩余按键的指法平均水平略低于
43 | 原有水平。因此实际击键速度会低于常规方案,从而打字速度会可能略低于理论值。
44 |
45 | 经赛码器测试,用五二顶和常规方案打文章,都打单字时键长降低 15%~18%,都打简词时
46 | 键长降低 12%~15%,符合前述评测系统的结果。我个人不打任何全码词组,五二顶的最佳
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 | `[ ; '` 三个上屏码,对应三重候选。例如 `u` 的三重候选依次为 「的/的是/的时候
76 | 」,除了共享一个编码 `u`,它们还各自具有唯一编码,依次为 `u[ u; u'`。输入这组
77 | 编码将会直接上屏对应候选,如果有前置二码,也将顶其上屏。如 `ywwb[`,将同时顶「
78 | 文」(前置二码 `yw`)上屏,并上屏「字」( `wb[`),即「文字」。又如 `zxu;` 将同
79 | 时顶「说」(前置二码 `zx`)上屏,并上屏「的是」(`u;`),即「说的是」。为指法计
80 | ,首选上屏码 `[` 还绑定到了 `TAB` 键,这样安排在双手对称位置,可避免同手连击和
81 | 小指大移位的同时发生。
82 |
83 | ## 打字示例详解
84 |
85 | 例子(`_` 表示空格):
86 |
87 | 示例 = fstgl_(省略 fs 二码首选「示」的空格)
88 | = fs_tgl_
89 |
90 | 在输入 `l` 时,输入码长度达到 5,会顶出前二码 `fs` 并上屏其第一候选「示」,余下
91 | 三码 `tgl` 的唯一候选是「例」,可按空格上屏。
92 |
93 | 艶 = mhqd_
94 | = mhqd1
95 | 黑色 = mhqd2(打词组)
96 | 黑色 = mhqd[(打单字)
97 | = mh_qd_
98 |
99 | 空格键是上屏候选列表中的当前项,默认为第一项,等同于按数字键 1。同样是上屏「黑
100 | 色」,`mhqd2` 是选择 `mhqd` 的第二候选,是打词组;`mhqd[` 是同时但分别上屏「黑
101 | 」(`mh`)「色」(`qd[`)二字,是打单字。五二顶是可以完全打单字或简词的,具有完
102 | 全的确定性,因为它只是将常规的第五码顶四码改为第五码顶二码,并引入上屏码实现不
103 | 足五码顶二码,没有本质区别。又如:
104 |
105 | 单 = xk[
106 | = xk_(一类上屏法)
107 | 字 = wb[
108 | = wb_(一类上屏法)
109 | 单字 = xkwb[(打单字)
110 | = xk_wb_
111 | 单字 = xkwb_(打词组)
112 | = xkwb1
113 |
114 | 很 = sb[
115 | = sb_(一类上屏法)
116 | 可能 = ea;
117 | = ea2(一类上屏法)
118 | 很可能 = sbea;(「很」+「可能」)
119 | = sb_ea2
120 | != sbea2(词组「很可能」的正确编码为 seas)
121 |
122 | 好的 = cbu[
123 | = cb_u_
124 | != cbu_ = 妇
125 | 名字 = qowb[
126 | = qo_wb_
127 | != qowb_ = 酁(未过滤字集时,qowb2 才是「名字」)
128 | 方案 = yuwci_
129 | = yu_wci_
130 | 说明书 = zxksbb[
131 | = zx_ks_bb_
132 |
133 | 再次提醒,顶的是前二码,不是二码词就不能用编码顶屏,只能用一类上屏法。正如五四
134 | 顶中顶的是前四码,不是四码词就必须用空格或选重键上屏或用标点顶屏。这类错误顶屏
135 | 的例子:
136 |
137 | 大小 = f_cx_(「大」是一码词)
138 | = f[cx[
139 | != fcx[
140 | = fc_x_ = 车道
141 | 选重 = pvz_rk_(「选」是三码词)
142 | != pvzrk_
143 | = pv_zrk_ = 先湩
144 | 徐码 = sui_gam_(「徐」是三码词)
145 | != suigam_
146 | = su_igam_ = 脸(igam 空码)
147 |
148 | 再次提醒,顶的是首选,非首选只能先上屏,再输入后续文字。这类错误顶屏的例子:
149 |
150 | 一些人 = gl;uu_
151 | = gl;uu[
152 | != gluu[
153 | = gl_uu_ = 正人
154 | gl 的首选是「正」,次选才是「一些」,所以「一些」不能通过后续编码来顶上屏。
155 |
156 | ## 键长比较和演示
157 |
158 | 下面为同一段文字的四种打法的编码——常规方案打单字、常规方案打简词、五二顶打单
159 | 字、五二顶打简词;都采用标点顶屏。选重键假定为数字键(常规方案固然可以设置符号
160 | 键选重,但由于顶功占用了符号来做上屏码,就统一为数字键选重,以免混淆和误解。)
161 | 试比较它们的键长。
162 |
163 | ```
164 | 原始文本(下方划出简词):
165 | 冰灯是流行于中国北方的一种古老的民间艺术形式。因为独特的地域优势,黑龙江可以说是制作冰灯最早的地方。
166 | ﹀﹀ ﹀﹀︾︾ ﹀﹀︾︾ ﹀﹀ ﹀﹀ ﹀﹀
167 | xa_xed_k_zy_sx_gi_o_ne_xvi_yu_u_g_ro_jg_jv_u_df_zk_hb_iwu_ghs_fi.nf_zc_vlv_pji_u_j_jfo_tjo_fr,mh_jpu_zi_eo_c_zx_k_pm_tp_xa_xed_kh_kz_u_j_yu.
168 | xa_xed_k_zy_xs_gi_o;xvi_yu_u_g_ro_jg_jv_u_df_zk_hb3gh3.n2vl3u_j_jfo_tjo_fr,mh_jpu_zi_e2zx_k_pt2xa_xed_kh_kz_u_j3.
169 | xaxed_k_zysxgio[nexvi_yuu[g_rojgjvu[dfzkhbiwu_ghs_fi.nfzcvlv_pji_u_j_jfo_tjo_fr,mhjpu_zieoc[zxk[pmtpxaxed_khkzu[j_yu.
170 | xaxed_k_zysxgio;xvi_yuu[g_rojgjvu[dfzkhb'gh'.n;vl'u_j_jfo_tjo_fr,mhjpu_zie;zxk[pt;xaxed_khkzu[j'.
171 | ```
172 |
173 | 以下是单字打法和简词打法的慢速动态演示,包含「预显候选」开启和关闭两种情况:
174 |
175 | 
176 | 
177 |
178 | 
179 | 
180 |
181 | 以下是单字打法和简词打法的正常速度动态演示:
182 |
183 | 
184 | 
185 |
186 | 一码、二码的首选总是可以用 `[` 上屏的,而空格上屏只能用在单独打的时候(即不存在
187 | 未上屏的前置二码),所以可以考虑在初期一律用 `[` 上屏,以简化思维,即如下打法:
188 |
189 | ```
190 | 冰灯是流行于中国北方的一种古老的民间艺术形式。因为独特的地域优势,黑龙江可以说是制作冰灯最早的地方。
191 | xaxed_k[zysxgio[nexvi_yuu[g[rojgjvu[dfzkhbiwu_ghs_fi.nfzcvlv_pji_u[j[jfo_tjo_fr,mhjpu_zieoc[zxk[pmtpxaxed_khkzu[j[yu.
192 | xaxed_k[zysxgio;xvi_yuu[g[rojgjvu[dfzkhb'gh'.n;vl'u[j[jfo_tjo_fr,mhjpu_zie;zxk[pt;xaxed_khkzu[j'.
193 | ```
194 |
195 | ## 与常规版的功能差异
196 |
197 | ### 造词和连打
198 |
199 | 切分符只能是反撇号 `` ` ``,并且插入切分符后才能进入「连打·造词」模式,造词是
200 | 在此模式中,自造词也只能在该模式中看到,这是由于 Rime 实现方式的限制。如造「五
201 | 二顶」,需输入 ``gd`ee`egm`` 并上屏,该词组即编码为 `geeg`,要调出时,需输入 ``
202 | geeg` ``。
203 |
204 | ## 五二顶的最佳实践
205 |
206 | 五二顶的最佳实践是只打单字或打单字和简词,原则上避免打全码词组,这样思维负担较
207 | 小,且码长已经能与大多数四码限长方案与大词库的组合相匹敌。另外简码词库小且固定
208 | (仅 1400 左右,其中少数中低频词不必强行记忆和使用),省去大量维护精力。
209 |
210 | ## 鸣谢
211 |
212 | 用 Rime 改造徐码为五二顶的方法来自蓝落萧的形音四二顶方案
213 | [C42](https://github.com/lanluoxiao/c42)。
214 |
--------------------------------------------------------------------------------
/misc/五二顶/demo/phrase_style_with_precand.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/misc/五二顶/demo/phrase_style_with_precand.gif
--------------------------------------------------------------------------------
/misc/五二顶/demo/single_style_with_precand.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/misc/五二顶/demo/single_style_with_precand.gif
--------------------------------------------------------------------------------
/misc/五二顶/demo/slow_phrase_style.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/misc/五二顶/demo/slow_phrase_style.gif
--------------------------------------------------------------------------------
/misc/五二顶/demo/slow_phrase_style_with_detailed_precand.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/misc/五二顶/demo/slow_phrase_style_with_detailed_precand.gif
--------------------------------------------------------------------------------
/misc/五二顶/demo/slow_single_style.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/misc/五二顶/demo/slow_single_style.gif
--------------------------------------------------------------------------------
/misc/五二顶/demo/slow_single_style_with_precand.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ace-Who/rime-xuma/1005a58dc3b23888c293648d6aa9a88f3f81804e/misc/五二顶/demo/slow_single_style_with_precand.gif
--------------------------------------------------------------------------------
/schema/lua/ace/helper.lua:
--------------------------------------------------------------------------------
1 | -- helper.lua
2 |
3 | -- List features and usage of the schema.
4 | local function translator(input, seg)
5 | local table
6 | if input == 'help/' then
7 | table = {
8 | { '繁体简化', 'Ctrl + Shift + 4' },
9 | { '簡入繁出', 'Ctrl + Shift + F' },
10 | { '三重注解', 'Ctrl + C' },
11 | { '注解轮换', 'Ctrl + Shift + C' },
12 | { '屏蔽词组', 'Ctrl + S' },
13 | { '显示时钟', 'Ctrl + T' },
14 | { '预显顶选©', 'Ctrl + D' },
15 | { '双重反查', '`' },
16 | { '全拼反查', '`P' },
17 | { '笔画反查', '`B' },
18 | { '环境变量', 'env/' },
19 | { '显示帮助', 'help/' },
20 | { '上屏注释', 'Ctrl + Shift + Return' },
21 | { '徐码官网', 'https://www.xumax.top' },
22 | { '方案下载', 'https://github.com/Ace-Who/rime-xuma' }
23 | }
24 | else return end
25 | for k, v in ipairs(table) do
26 | local cand = Candidate('help', seg.start, seg._end, v[2], ' ' .. v[1])
27 | cand.preedit = input .. '\t简要说明'
28 | yield(cand)
29 | end
30 | end
31 |
32 | return translator
33 |
--------------------------------------------------------------------------------
/schema/lua/ace/lib/basic.lua:
--------------------------------------------------------------------------------
1 | -- basic.lua
2 |
3 |
4 | local basic = {}
5 | package.loaded[...] = basic
6 |
7 |
8 | -- The found index can be both interger and string.
9 | function basic.index(table, item)
10 | for k, v in pairs(table) do
11 | if v == item then return k end
12 | end
13 | end
14 |
15 |
16 | -- The found index is an interger.
17 | function basic.last_index(table, item)
18 | for k = #table, 1, -1 do
19 | if table[k] == item then return k end
20 | end
21 | end
22 |
23 |
24 | -- Create a dict from a list using the i_k-th item (converted to string) of
25 | -- every list item as the key of a dict item and the i_v-th item of the same
26 | -- list item as the value of the dict item. i_k and i_v are defaulted to 1 and
27 | -- 2.
28 | function basic.list2dict(l, i_k, i_v)
29 | i_k = i_k or 1
30 | i_v = i_v or 2
31 | t = {}
32 | for _, v in ipairs(l) do
33 | t[tostring(v[i_k])] = v[i_v]
34 | end
35 | return t
36 | end
37 |
38 |
39 | function basic.map(table, func)
40 | local t = {}
41 | for k, v in pairs(table) do
42 | t[k] = func(v)
43 | end
44 | return t
45 | end
46 |
47 | -- Bad name for feature, unused for new scripts.
48 | function basic.matchstr(str, pat)
49 | local t = {}
50 | for i in str:gmatch(pat) do
51 | t[#t + 1] = i
52 | end
53 | return t
54 | end
55 |
56 |
57 | -- Returns a pseudo-random integer in ranges.
58 | -- The ranges must be given as { start, end } where end >= start.
59 | function basic.random_in_ranges(table, ...)
60 | local ranges = { table, ... }
61 | local milestone = {1}
62 | for k, t in pairs(ranges) do
63 | milestone[k+1] = milestone[k] + t[2] - t[1] + 1
64 | end
65 | local r = math.random(milestone[#milestone] - milestone[1])
66 | for k, t in ipairs(milestone) do
67 | if r < milestone[k+1] then return ranges[k][1] + r - milestone[k] end
68 | end
69 | end
70 |
71 |
72 | -- Todo: Work with an argument like os.time().
73 | function basic.time_accurate()
74 | local time, clock = os.time(), os.clock()
75 | return time + clock - math.floor(clock)
76 | end
77 |
78 |
79 | function basic.utf8chars(str)
80 | local chars = {}
81 | for pos, code in utf8.codes(str) do
82 | chars[#chars + 1] = utf8.char(code)
83 | end
84 | return chars
85 | end
86 |
87 |
88 | function basic.utf8sub(str, first, last)
89 | if not last or last > utf8.len(str) then
90 | last = utf8.len(str)
91 | elseif last < 0 then
92 | last = utf8.len(str) + 1 + last
93 | end
94 | local fstoff = utf8.offset(str, first)
95 | local lstoff = utf8.offset(str, last + 1)
96 | if not fstoff then fstoff = 1 end
97 | if lstoff then lstoff = lstoff - 1 end
98 | return string.sub(str, fstoff, lstoff)
99 | end
100 |
--------------------------------------------------------------------------------
/schema/lua/ace/lib/rime.lua:
--------------------------------------------------------------------------------
1 | -- rime.lua
2 |
3 | local rime = {}
4 | package.loaded[...] = rime
5 | rime.encoder = {}
6 |
7 |
8 | --[[ rime.encoder.load_settings()
9 | 用一个 librime 风格的列表描述构词规则。之后解析为另一张表,面向后端函数,其元素
10 | 以词组长度为键,以表格 { char_idx, code_idx } 的列表为值,依次描述词组的每一码
11 | 。formula 中 'U' 和 'u' 之后的字母表示从末尾倒数,解析为负数索引。
12 |
13 | sample encoder configuration (input):
14 | {
15 | { length_equal = 2, formula = 'AaAbBaBb' },
16 | { length_equal = 3, formula = 'AaBaCaCb' },
17 | { length_in_range = {4, 10}, formula = 'AaBaCaZa' }
18 | }
19 |
20 | output:
21 | {
22 | nil,
23 | { { 1, 1 }, { 1, 2 }, { 2, 1 }, { 2, 2 } },
24 | { { 1, 1 }, { 2, 1 }, { 3, 1 }, { 3, 2 } },
25 | { { 1, 1 }, { 2, 1 }, { 3, 1 }, { -1, 1 } },
26 | ... -- 第 5 至 10 个元素与第 4 个元素相同。
27 | }
28 | --]]
29 |
30 |
31 | function rime.encoder.parse_formula(formula)
32 | if type(formula) ~= 'string' or formula:gsub('%u%l', '') ~= '' then return end
33 | local rule = {}
34 | local A, a, U, u, Z, z = ('AaUuZz'):byte(1, -1)
35 | for m in formula:gmatch('%u%l') do
36 | local upper, lower = m:byte(1, 2)
37 | local char_idx = upper < U and upper - A + 1 or upper - Z - 1
38 | local code_idx = lower < u and lower - a + 1 or lower - z - 1
39 | rule[#rule+1] = { char_idx, code_idx }
40 | end
41 | return rule
42 | end
43 |
44 |
45 | function rime.encoder.load_settings(setting)
46 | -- 注意到公式同则规则同,可通过 f2r 在 rt 中作引用定义,以节省资源。
47 | local ft, f2r, rt = {}, {}, {}
48 | for _, t in ipairs(setting) do
49 | if t.length_equal then ft[t.length_equal] = t.formula
50 | elseif t.length_in_range then
51 | local min, max = table.unpack(t.length_in_range)
52 | for l = min, max do
53 | ft[l] = t.formula
54 | end
55 | end
56 | end
57 | -- setting 中的 length 不一定连续且一般不包括 1,所以不能用 ipairs()。
58 | for k, f in pairs(ft) do
59 | local rule = rime.encoder.parse_formula(f)
60 | if not rule then return end
61 | if not f2r[f] then f2r[f] = rule end
62 | rt[k] = f2r[f]
63 | end
64 | return rt
65 | end
66 |
67 |
68 | function rime.switch_option(name, context)
69 | context:set_option(name, not context:get_option(name))
70 | end
71 |
72 |
73 | -- Cycle options of a switcher. When #options == 1, toggle the only option.
74 | -- Otherwise unset the first set option and unset the next, or the previous if
75 | -- 'reverse' is true. When no set option is present, try the key
76 | -- 'options.save', then 'options.default', then 1.
77 | function rime.cycle_options(options, env, reverse)
78 | local context = env.engine.context
79 | if #options == 0 then return 0 end
80 | if #options == 1 then
81 | rime.switch_option(options[1], context)
82 | return 1
83 | end
84 | local state
85 | for k, v in ipairs(options) do
86 | if context:get_option(v) then
87 | context:set_option(v, false)
88 | state = (reverse and (k - 1) or (k + 1)) % #options
89 | if state == 0 then state = #options end
90 | break
91 | end
92 | end
93 | local k = state or options.save or options.default or 1
94 | context:set_option(options[k], true)
95 | return k
96 | end
97 |
98 |
99 | -- Set an option in 'options' if no one is set yet.
100 | function rime.init_options(options, context)
101 | for k, v in ipairs(options) do
102 | if context:get_option(v) then return end
103 | end
104 | local k = state or options.save or options.default or 1
105 | context:set_option(options[k], true)
106 | end
107 |
108 | -- Generate a processor that cycle a group of options with a key.
109 | -- For now only works when composing.
110 | function rime.make_option_cycler(
111 | options,
112 | cycle_key_config_path,
113 | switch_key_config_path,
114 | reverse
115 | )
116 | local processor, cycle_key, switch_key = {}
117 | processor.init = function (env)
118 | local config = env.engine.schema.config
119 | cycle_key = config:get_string(cycle_key_config_path)
120 | switch_key = config:get_string(switch_key_config_path)
121 | end
122 | processor.func = function (key, env)
123 | local context = env.engine.context
124 | if context:is_composing() and key:repr() == cycle_key then
125 | local state = rime.cycle_options(options, env, reverse)
126 | if state > 1 then options.save = state end
127 | return 1
128 | elseif context:is_composing() and key:repr() == switch_key then
129 | -- 选项状态可能在切换方案时被重置,因此需检测更新。但是不能在 filter.init
130 | -- 中检测,因为得到的似乎是重置之前的状态,说明组件初始化先于状态重置。为
131 | -- 经济计,仅在手动切换开关时检测。
132 | -- https://github.com/rime/librime/issues/449
133 | -- Todo: 对于较新的 librime-lua,尝试利用 option_update_notifier 更新
134 | -- options.save
135 | for k, v in ipairs(options) do
136 | if context:get_option(v) then
137 | if k > 1 then options.save = k end
138 | end
139 | end
140 | local k = options.save or options.default
141 | -- Consider the 1st options as OFF state.
142 | if context:get_option(options[1]) then
143 | context:set_option(options[1], false)
144 | context:set_option(options[k], true)
145 | else
146 | context:set_option(options[k], false)
147 | context:set_option(options[1], true)
148 | end
149 | return 1
150 | end
151 | return 2 -- kNoop
152 | end
153 | return processor
154 | end
155 |
--------------------------------------------------------------------------------
/schema/lua/ace/os_tools.lua:
--------------------------------------------------------------------------------
1 | -- os_tools.lua
2 |
3 | -- Insert a candidate containing current time as a lazy clock.
4 | local function lazy_clock_filter(input, env)
5 | if not env.engine.context:get_option('lazy_clock') then
6 | for cand in input:iter() do yield(cand) end
7 | return
8 | end
9 | local page_size = env.engine.schema.page_size
10 | local i = 1
11 | local prev_cand = {}
12 | local done = false
13 | for cand in input:iter() do
14 | if page_size > 1 and not done and i == page_size then
15 | done = true
16 | yield(Candidate("lazy_clock", cand.start, cand._end, os.date("%H:%M:%S"), " 懒钟"))
17 | end
18 | yield(cand)
19 | -- Only count unique candidates.
20 | if cand.text ~= prev_cand.text then i = i+1 end
21 | prev_cand = cand
22 | end
23 | if not done then
24 | yield(Candidate("lazy_clock", 1, -1, os.date("%H:%M:%S"), " 不打不走"))
25 | end
26 | end
27 |
28 | -- Display clock in preedit instead of as a candidate.
29 | local function preedit_lazy_clock_filter(input, env)
30 | if env.engine.context:get_option('preedit_lazy_clock') then
31 | for cand in input:iter() do
32 | if cand.preedit ~= '' then
33 | local tab = cand.preedit:find('\t') and ' ' or '\t'
34 | cand.preedit = cand.preedit .. tab .. os.date("%H:%M:%S")
35 | end
36 | yield(cand)
37 | end
38 | else
39 | for cand in input:iter() do yield(cand) end
40 | end
41 | end
42 |
43 | -- 将 `env/VAR` 翻译为系统环境变量。
44 | -- 长度限制为 199 字节。太长时 UI 卡住,且实际上屏的是前 199 字节。
45 | local function os_env_translator(input, seg)
46 | local prefix = '^env/'
47 | if input:find(prefix .. '%w+') then
48 | local val, cand = os.getenv(input:gsub(prefix, ''))
49 | if val then
50 | cand = Candidate("os_env", seg.start, seg._end, val:sub(1,199), "")
51 | else
52 | cand = Candidate("os_env", seg.start, seg._end, "", "空值")
53 | end
54 | cand.preedit = input .. '\t环境变量'
55 | yield(cand)
56 | end
57 | end
58 |
59 | local function os_run_translator(input, seg)
60 | local prefix = '^run/'
61 | if input:find(prefix .. '%w+') then
62 | local command = input:gsub(prefix, '')
63 | local cand = Candidate("os_run", seg.start, seg._end, command, "")
64 | cand.preedit = 'run/' .. '\t运行命令(Ctrl+R)'
65 | yield(cand)
66 | end
67 | end
68 |
69 | return { lazy_clock_filter = lazy_clock_filter,
70 | preedit_lazy_clock_filter = preedit_lazy_clock_filter,
71 | os_env_translator = os_env_translator,
72 | os_run_translator = os_run_translator }
73 |
--------------------------------------------------------------------------------
/schema/lua/ace/single_char_only.lua:
--------------------------------------------------------------------------------
1 | -- single_char_only.lua
2 | -- Comes from @hchuihui the author of librime-lua
3 | -- https://github.com/rime/librime/issues/248#issuecomment-468924677
4 |
5 | local function filter(input, env)
6 | b = env.engine.context:get_option("single_char_only")
7 | for cand in input:iter() do
8 | if (not b or utf8.len(cand.text) == 1) then
9 | yield(cand)
10 | end
11 | end
12 | end
13 |
14 | return filter
15 |
--------------------------------------------------------------------------------
/schema/lua/ace/xuma_52p_precand.lua:
--------------------------------------------------------------------------------
1 | -- xuma_52p_precand.lua
2 | -- 在 preedit 中显示编码的两个分段所对应的两个(组)候选
3 |
4 |
5 | local basic = require('ace/lib/basic')
6 | local map = basic.map
7 | local rime = require 'ace.lib.rime'
8 | -- options 要与方案保持一致
9 | local options = {
10 | 'xuma_52p_precand.off',
11 | 'xuma_52p_precand.brief',
12 | 'xuma_52p_precand.detailed'
13 | }
14 | options.default = 2
15 |
16 |
17 | local processor = rime.make_option_cycler(options,
18 | 'xuma_52p_precand/lua/cycle_key',
19 | 'xuma_52p_precand/lua/switch_key')
20 |
21 |
22 | local function lookup(db)
23 | return function (str)
24 | return db:lookup(str)
25 | end
26 | end
27 |
28 |
29 | local function get_seg_cands(input, detailed, env)
30 | local cand1
31 | if input:len() < 3 then
32 | if not detailed then return end
33 | local codes = { input .. '_1', input .. '_2', input .. '_3' }
34 | return map(codes, lookup(env.code_to_text_rvdb))
35 | else
36 | local seg1 = input:sub(1, 2)
37 | local seg2 = input:sub(3)
38 | cand1 = env.code_to_text_rvdb:lookup(seg1 .. '_1')
39 | local codes = { seg2 .. '_1', seg2 .. '_2', seg2 .. '_3' }
40 | return cand1, map(codes, lookup(env.code_to_text_rvdb))
41 | end
42 | end
43 |
44 |
45 | -- Todo: 把这个冗长的函数写得更优雅些。Update: 分解并精炼,做得差不多了。
46 | local function yield_with_precand(input, context, env)
47 | local sel_inp = context.caret_pos == 0
48 | and context.input
49 | or context.input:sub(1, context.caret_pos)
50 | if sel_inp:find('%l$') then -- 一定要加这个判断,否则会影响符号键的功能
51 | sel_inp = sel_inp:match('%l+$') -- 去掉前置标点部分
52 | end
53 | local detailed = context:get_option("xuma_52p_precand.detailed")
54 | -- 这是以候选迭代为基础的,因此要求无空码。
55 | for cand in input:iter() do
56 | local cand1, cand2 = get_seg_cands(sel_inp, detailed, env)
57 | -- 本方案中分号引导用于实现其他多个功能
58 | local rep = context.input:find('^;')
59 | and cand.text
60 | or not cand1 -- means sel_inp:len() < 3 and not detailed
61 | and cand.text
62 | or not cand2 -- means sel_inp:len() < 3 and detailed
63 | and (cand1[1] == cand.text
64 | and table.concat(cand1, '|')
65 | or ('%s>%s'):format(table.concat(cand1, '|'), cand.text)
66 | )
67 | or detailed
68 | and ('%s+%s=%s'):format(cand1, table.concat(cand2, '|'), cand.text)
69 | or ('%s%s'):format(cand1, cand2[1])
70 | cand.preedit = cand.preedit:find('\t')
71 | and cand.preedit:gsub('.+\t', rep .. '\t')
72 | or rep .. '\t'
73 | -- simplifier 的候选无法这样修改 preedit,只能用 Candidate() 生成再修改。
74 | yield(cand)
75 | end
76 | end
77 |
78 |
79 | local function filter(input, env)
80 | local context = env.engine.context
81 | if not context:get_option("xuma_52p_precand.off")
82 | and (context.input:find('%l$')
83 | or context.input:find('^;'))
84 | and not context.input:find('`') -- 排除反查和造词模式
85 | then
86 | yield_with_precand(input, context, env)
87 | else
88 | for cand in input:iter() do yield(cand) end
89 | end
90 | end
91 |
92 |
93 | local function init(env)
94 | local config = env.engine.schema.config
95 | local code_to_text_rvdb = config:get_string('lua_reverse_db/code_to_text')
96 | env.code_to_text_rvdb = ReverseDb('build/' .. code_to_text_rvdb .. '.reverse.bin')
97 | rime.init_options(options, env.engine.context)
98 | end
99 |
100 |
101 | return { filter = { init = init, func = filter }, processor = processor }
102 |
--------------------------------------------------------------------------------
/schema/lua/ace/xuma_postpone_fullcode.lua:
--------------------------------------------------------------------------------
1 | -- xuma_postpone_fullcode.lua
2 | -- 出现重码时,将全码匹配且有简码的「单字」「适当」后置。
3 | -- 目前的实现方式,原理适用于所有使用规则简码的形码方案。
4 |
5 |
6 | local radstr = '\z
7 | 一不了人之大上也子而生自其行十用发天方日\z
8 | 三小二心又长已月力文王西手工门身由儿入己\z
9 | 山曰世水立走女言马金口几气比白非夫未士且\z
10 | 目电八九七石车千干火臣广古早母乃亦示土片\z
11 | 音止食黑衣革巴户木米田毛永习耳雨皮甲凡丁\z
12 | 鱼牛申川鬼刀牙予骨末辛尤厂丰乌麻贝乙鸟辰\z
13 | 羊瓦虫尸鼻壬羽戊寸巳舟夕甫矛酉亥卜戈鼠鹿\z
14 | 弓瓜穴欠巾兀矢犬爪歹禾夭禺匕豕臼匚弋皿缶\z
15 | 髟钅攵幺卅艮耒隹殳攴長見風彡門貝車飛巛馬\z
16 | 魚齒頁鹵鳥丂丄丅丆丌丨丩丬丱丶丷丿乀乁乂\z
17 | 乚乛亅亠亻僉冂冊冎冖冫凵刂勹匸卄卌卝卩厶\z
18 | 吅囗夂夊宀屮巜廴廾彐彳忄戶扌朩氵氺灬為烏\z
19 | 爫爾爿牜犭疒癶礻糸糹纟罒耂艹虍衤覀訁讠豸\z
20 | 辶釒镸阝韋飠饣鬥黽\z
21 | 兀㐄㐅㔾䒑'
22 |
23 |
24 | local function init(env)
25 | local config = env.engine.schema.config
26 | local code_rvdb = config:get_string('lua_reverse_db/code')
27 | env.code_rvdb = ReverseDb('build/' .. code_rvdb .. '.reverse.bin')
28 | env.his_inp = config:get_string('history/input')
29 | env.delimiter = config:get_string('speller/delimiter')
30 | env.max_index = config:get_int('xuma_postpone_fullcode/lua/max_index')
31 | or 4
32 | end
33 |
34 |
35 | local function get_short(codestr)
36 | local s = ' ' .. codestr
37 | for code in s:gmatch('%l+') do
38 | if s:find(' ' .. code .. '%l+') then
39 | return code
40 | end
41 | end
42 | end
43 |
44 |
45 | local function has_short_and_is_full(cand, env)
46 | -- completion 和 sentence 类型不属于精确匹配,但要通过 cand:get_genuine() 判
47 | -- 断,因为 simplifier 会覆盖类型为 simplified。先行判断 type 并非必要,只是
48 | -- 为了轻微的性能优势。
49 | local cand_gen = cand:get_genuine()
50 | if cand_gen.type == 'completion' or cand_gen.type == 'sentence' then
51 | return false, true
52 | end
53 | local input = env.engine.context.input
54 | local cand_input = input:sub(cand.start + 1, cand._end)
55 | -- 去掉可能含有的 delimiter。
56 | cand_input = cand_input:gsub('[' .. env.delimiter .. ']', '')
57 | -- 字根可能设置了特殊扩展码,不视作全码,不予后置。
58 | if cand_input:len() > 2 and radstr:find(cand_gen.text, 1, true) then
59 | return
60 | end
61 | -- history_translator 不后置。
62 | if cand_input == env.his_inp then return end
63 | local codestr = env.code_rvdb:lookup(cand_gen.text)
64 | local is_comp = not
65 | string.find(' ' .. codestr .. ' ', ' ' .. cand_input .. ' ', 1, true)
66 | local short = not is_comp and get_short(codestr)
67 | -- 注意排除有简码但是输入的是不规则编码的情况
68 | return short and cand_input:find('^' .. short .. '%l+'), is_comp
69 | end
70 |
71 |
72 | local function filter(input, env)
73 | local context = env.engine.context
74 | if not context:get_option("xuma_postpone_fullcode") then
75 | for cand in input:iter() do yield(cand) end
76 | else
77 | -- 具体实现不是后置目标候选,而是前置非目标候选
78 | local dropped_cands = {}
79 | local done_drop
80 | local pos = 1
81 | -- Todo: 计算 pos 时考虑可能存在的重复候选被 uniquifier 合并的情况。
82 | for cand in input:iter() do
83 | if done_drop then
84 | yield(cand)
85 | else
86 | -- 后置不越过 env.max_index 和以下几类候选:
87 | -- 1) 顶功方案使用 script_translator 导致的匹配部分输入的候选,例如输入
88 | -- otu 且光标在 u 后时会出现编码为 ot 的候选。不过通过填满码表的三码和
89 | -- 四码的位置,能消除这类候选。2) 顶功方案的造词翻译器允许出现的
90 | -- completion 类型候选。3) 顶功方案的补空候选——全角空格( U+3000)。
91 | local is_bad_script_cand = cand._end < context.caret_pos
92 | local drop, is_comp = has_short_and_is_full(cand, env)
93 | if pos >= env.max_index
94 | or is_bad_script_cand or is_comp or cand.text == ' ' then
95 | for i, cand in ipairs(dropped_cands) do yield(cand) end
96 | done_drop = true
97 | yield(cand)
98 | -- 精确匹配的词组不予后置
99 | elseif not drop or utf8.len(cand.text) > 1 then
100 | yield(cand)
101 | pos = pos + 1
102 | else table.insert(dropped_cands, cand)
103 | end
104 | end
105 | end
106 | for i, cand in ipairs(dropped_cands) do yield(cand) end
107 | end
108 | end
109 |
110 |
111 | return { init = init, func = filter }
112 |
113 |
114 | --[[ 测试例字:
115 | 我 箋 pffg
116 | 出 艸 糾 ⾋ aau
117 | 在 黄土 hkjv
118 | 地 軐 jbe
119 | 是 鶗 kglu
120 | 道 单身汉 xtzd
121 | 以 (多个词组) cwuu
122 | 同 同路 mgov
123 | 只 叭 otu
124 | 渐 浙 zfrj
125 | 资 盗 xqms
126 | --]]
127 |
--------------------------------------------------------------------------------
/schema/lua/ace/xuma_spelling.lua:
--------------------------------------------------------------------------------
1 | -- xuma_spelling.lua
2 |
3 | --[[
4 | 单字的字根拆分三重注解直接利用 simplifier 通过预制的 OpenCC 词库查到。
5 | 问题:这个方法,词组只能显示每个单字的注解,需要进行简化合并处理,仅显示词组编
6 | 码和对应字根。
7 | 计划:用 Lua 处理词组注解。
8 |
9 | 实现障碍:simplifier 返回的类型,无法修改其注释。
10 | https://github.com/hchunhui/librime-lua/issues/16
11 | 一个思路:show_in_commet: false
12 | 然后读取 cand.text 修改后作为注释显示,问题是无法直接将 cand.text 改回。
13 | 理论上只能用 Candidate() 生成简单类型候选。
14 |
15 | 现在的方案:完全弃用 simplifier + OpenCC,单字和词组都用 Lua 处理。
16 |
17 | 注解数据来源与 OpenCC 方法相同,编成伪方案的伪词典,通过写入主方案的
18 | schema/dependencies 来让 rime 编译为反查库 *.reverse.bin,最后通过 Lua 的反查
19 | 函数查询。
20 |
21 | Handle multibye string in Lua:
22 | https://stackoverflow.com/questions/9003747/splitting-a-multibyte-string-in-lua
23 |
24 | lua_filter 如何判断 cand 是否来自反查或当前是否处于反查状态?
25 | https://github.com/hchunhui/librime-lua/issues/18
26 | --]]
27 |
28 | local basic = require 'ace/lib/basic'
29 | local map = basic.map
30 | local utf8chars = basic.utf8chars
31 | local rime = require 'ace/lib/rime'
32 | local config = {}
33 | config.encode_rules = {
34 | { length_equal = 2, formula = 'AaAbBaBb' },
35 | { length_equal = 3, formula = 'AaBaCaCb' },
36 | { length_in_range = {4, 10}, formula = 'AaBaCaZa' }
37 | }
38 | -- 注意借用编码规则有局限性:取码索引不一定对应取根索引,尤其是从末尾倒数时。
39 | local spelling_rules = rime.encoder.load_settings(config.encode_rules)
40 | -- options 要与方案保持一致
41 | local options = {
42 | 'xuma_spelling.off',
43 | 'xuma_spelling.lv1',
44 | 'xuma_spelling.lv2',
45 | 'xuma_spelling.lv3'
46 | }
47 | options.default = 4
48 |
49 |
50 | local processor = rime.make_option_cycler(options,
51 | 'xuma_spelling/lua/cycle_key',
52 | 'xuma_spelling/lua/switch_key')
53 |
54 |
55 | local function xform(s)
56 | -- input format: "[spelling,code_code...,pinyin_pinyin...]"
57 | -- output format: "〔 spelling · code code ... · pinyin pinyin ... 〕"
58 | return s == '' and s or s:gsub('%[', '〔 ')
59 | :gsub('%]', ' 〕')
60 | :gsub('{', '<')
61 | :gsub('}', '>')
62 | :gsub('_', ' ')
63 | :gsub(',', ' · ')
64 | end
65 |
66 |
67 | local function parse_spll(str)
68 | -- Handle spellings like "{于下}{四点}丶"(for 求) where some radicals are
69 | -- represented by characters in braces.
70 | local radicals = {}
71 | for seg in str:gsub('%b{}', ' %0 '):gmatch('%S+') do
72 | if seg:find('^{.+}$') then
73 | table.insert(radicals, seg)
74 | else
75 | for pos, code in utf8.codes(seg) do
76 | table.insert(radicals, utf8.char(code))
77 | end
78 | end
79 | end
80 | return radicals
81 | end
82 |
83 |
84 | local function parse_raw_tricomment(str)
85 | return str:gsub(',.*', ''):gsub('^%[', '')
86 | end
87 |
88 |
89 | local function spell_phrase(s, spll_rvdb)
90 | local chars = utf8chars(s)
91 | local rule = spelling_rules[#chars]
92 | if not rule then return end
93 | local radicals = {}
94 | for i, coord in ipairs(rule) do
95 | local char_idx = coord[1] > 0 and coord[1] or #chars + 1 + coord[1]
96 | local raw = spll_rvdb:lookup(chars[char_idx])
97 | -- 若任一取码单字没有注解数据,则不对词组作注。
98 | if raw == '' then return end
99 | local char_radicals = parse_spll(parse_raw_tricomment(raw))
100 | local code_idx = coord[2] > 0 and coord[2] or #char_radicals + 1 + coord[2]
101 | radicals[i] = char_radicals[code_idx] or '◇'
102 | end
103 | return table.concat(radicals)
104 | end
105 |
106 |
107 | local function get_tricomment(cand, env)
108 | local text = cand.text
109 | if utf8.len(text) == 1 then
110 | local raw_spelling = env.spll_rvdb:lookup(text)
111 | if raw_spelling == '' then return end
112 | return env.engine.context:get_option('xuma_spelling.lv1')
113 | and xform(raw_spelling:gsub('%[(.-),.*%]', '[%1]'))
114 | or env.engine.context:get_option('xuma_spelling.lv2')
115 | and xform(raw_spelling:gsub('%[(.-,.-),.*%]', '[%1]'))
116 | or xform(raw_spelling) -- xuma_spelling.lv3 is on
117 | elseif utf8.len(text) > 1 then
118 | local spelling = spell_phrase(text, env.spll_rvdb)
119 | if not spelling then return end
120 | spelling = spelling:gsub('{(.-)}', '<%1>')
121 | if env.engine.context:get_option('xuma_spelling.lv1') then
122 | return ('〔 %s 〕'):format(spelling)
123 | end
124 | local code = env.code_rvdb:lookup(text)
125 | if code ~= '' then -- 按长度排列多个编码。
126 | local codes = {}
127 | for m in code:gmatch('%S+') do codes[#codes + 1] = m end
128 | table.sort(codes, function (i, j) return i:len() < j:len() end)
129 | return ('〔 %s · %s 〕'):format(spelling, table.concat(codes, ' '))
130 | else -- 以括号类型区分非本词典之固有词
131 | return ('〈 %s 〉'):format(spelling)
132 | -- Todo: 如果要为此类词组添加编码注释,其中的单字存在一字多码的情况,需先
133 | -- 通过比较来确定全码,再提取词组编码。注意特殊单字:八个八卦名,要排除其
134 | -- 特殊符号编码 'dl?g'.
135 | end
136 | end
137 | end
138 |
139 |
140 | local function filter(input, env)
141 | if env.engine.context:get_option('xuma_spelling.off') then
142 | for cand in input:iter() do yield(cand) end
143 | return
144 | end
145 | for cand in input:iter() do
146 | --[[
147 | 用户有时需要通过拼音反查简化字并显示三重注解,但 luna_pinyin 的简化字排序不
148 | 合理且靠后。用户可开启 simplification 来解决,但是 simplifier 会强制覆盖注
149 | 释,为了避免三重注解被覆盖,只能生成一个简单类型候选来代替原候选。
150 | Todo: 测试在 /tips: none 的条件下,用 cand.text 和
151 | cand:get_genuine().text 分别读到什么值。若分别读到转换前后的候选,则可以仅
152 | 修改 comment 而不用生成简单类型候选来代替原始候选。这样做的问题是关闭
153 | xuma_spelling 时就不显示 tips 了。
154 | --]]
155 | if cand.type == 'simplified' and env.name_space == 'xmsp_for_rvlk' then
156 | local comment = (get_tricomment(cand, env) or '') .. cand.comment
157 | cand = Candidate("simp_rvlk", cand.start, cand._end, cand.text, comment)
158 | else
159 | local add_comment = cand.type == 'punct'
160 | and env.code_rvdb:lookup(cand.text)
161 | or cand.type ~= 'sentence'
162 | and get_tricomment(cand, env)
163 | if add_comment and add_comment ~= '' then
164 | -- 混输和反查中的非 completion 类型,原注释为空或主词典的编码。
165 | -- 为免重复冗长,直接以新增注释替换之。前提是后者非空。
166 | cand.comment = cand.type ~= 'completion'
167 | and ((env.name_space == 'xmsp' and env.is_mixtyping)
168 | or (env.name_space == 'xmsp_for_rvlk'))
169 | and add_comment
170 | or add_comment .. cand.comment
171 | end
172 | end
173 | yield(cand)
174 | end
175 | end
176 |
177 |
178 | local function init(env)
179 | local config = env.engine.schema.config
180 | local spll_rvdb = config:get_string('lua_reverse_db/spelling')
181 | local code_rvdb = config:get_string('lua_reverse_db/code')
182 | local abc_extags_size = config:get_list_size('abc_segmentor/extra_tags')
183 | env.spll_rvdb = ReverseDb('build/' .. spll_rvdb .. '.reverse.bin')
184 | env.code_rvdb = ReverseDb('build/' .. code_rvdb .. '.reverse.bin')
185 | env.is_mixtyping = abc_extags_size > 0
186 | rime.init_options(options, env.engine.context)
187 | end
188 |
189 |
190 | return { filter = { init = init, func = filter }, processor = processor }
191 |
--------------------------------------------------------------------------------
/schema/rime.lua:
--------------------------------------------------------------------------------
1 | -- rime.lua
2 |
3 | helper = require("ace/helper")
4 |
5 | single_char_only = require("ace/single_char_only")
6 |
7 | local os_tools = require("ace/os_tools")
8 | lazy_clock = os_tools.lazy_clock_filter
9 | preedit_lazy_clock = os_tools.preedit_lazy_clock_filter
10 | os_env = os_tools.os_env_translator
11 |
12 | local t = require("ace/xuma_spelling")
13 | xuma_spelling = t.filter
14 | xuma_spelling_processor = t.processor
15 |
16 | xuma_postpone_fullcode = require("ace/xuma_postpone_fullcode")
17 |
18 | local t = require("ace/xuma_52p_precand")
19 | xuma_52p_precand = t.filter
20 | xuma_52p_precand_processor = t.processor
21 |
--------------------------------------------------------------------------------
/schema/xuma.extended.dict.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: "xuma.extended"
3 | version: "2020.04.12"
4 | sort: by_weight
5 | columns:
6 | - text
7 | - code
8 | - weight
9 | - stem
10 | ...
11 |
12 | # 「#」号开头的行为注释,不生效。
13 | # 扩展词典添加词条示例,格式为「词条编码」:
14 |
15 | 新词条 yzvi
16 |
17 | # 长度在编码规则 encoder/rules 定义范围内的词组,可省略编码:
18 | # 重新部署时会按规则自动编码,能以 tecc 打出「自动编码词组」。
19 |
20 | 自动编码词组
21 |
22 | # 自定义编码不必遵循徐码编码规则,词条也不必是汉字。
23 |
24 | 不合徐码编码规则的词条 sdsd
25 | Xuma is good! good
26 | Rime 徐码三重注解 rime
27 | Rime 徐码五二顶 rime
28 |
--------------------------------------------------------------------------------
/schema/xuma_52p_long.dict.yaml:
--------------------------------------------------------------------------------
1 | # encoding: utf-8
2 |
3 | ---
4 | name: "xuma_52p_long"
5 | version: "2021.03.07"
6 | sort: original
7 | import_tables:
8 | - xuma
9 | - xuma.extended
10 | - xuma.plh.len3
11 | - xuma.plh.len4
12 | columns:
13 | - text
14 | - code
15 | - weight
16 | - stem
17 | encoder:
18 | exclude_patterns:
19 | - '^[a-z]$' # 一简不参与造词
20 | - '[^a-z]'
21 | - '^bg(zs|zx|ys|yx|jc|hx|sx)$' # 表格
22 | - '^sz[lyeswlqbj]' # 数字
23 | # - '^dl..$' # 特殊字符和八卦名 "乾兑坎坤巽离艮震" 的符号编码(dl?g).
24 | # 误伤太多,取消这条。
25 | rules:
26 | - length_equal: 2
27 | formula: "AaAbBaBb"
28 | - length_equal: 3
29 | formula: "AaBaCaCb"
30 | - length_in_range: [4, 10]
31 | formula: "AaBaCaZa"
32 | ...
33 |
--------------------------------------------------------------------------------
/schema/xuma_52p_long.schema.yaml:
--------------------------------------------------------------------------------
1 | # Rime schema settings
2 | # encoding: utf-8
3 |
4 | schema:
5 | schema_id: xuma_52p_long
6 | name: 徐码五二辅案
7 | version: "2021.03.07"
8 | author:
9 | - Q
10 | description: |
11 | 本辅助方案的作用是生成棱镜 xuma_52p_long.prism,供主方案调用。
12 | 本方案不直接用于打字。
13 |
14 | speller:
15 | algebra:
16 | # 本辅助案生成之棱镜由主案的副翻译器调用。由于彼为一个 script_translator,
17 | # 会对编码作分段匹配,导致出现多余候选。欲避免此现象,需如下消除码长小于 3
18 | # 的词条。但仅做整体匹配又会出现空码,此时第五码不顶屏,原因未知。故还需在
19 | # 码表中将三、四码词条填满,正如 C42 填三码的做法。这是以一个候选换掉不确定
20 | # 的多个多余候选。
21 | - erase/^[a-z]{1,2}$/
22 | - xform/^\*// # 特码以星号开头,以便在全码后置脚本中区分,以防识别为全码
23 |
24 | translator:
25 | dictionary: xuma_52p_long
26 | # 定义此主翻译器的 speller「生成」的棱镜文件。默认与 dictionary 同名。
27 | # prism: xuma_52p_long
28 | enable_user_dict: false
29 | enable_encoder: false
30 | enable_commit_history: false
31 |
--------------------------------------------------------------------------------
/schema/xuma_52p_qshare.schema.yaml:
--------------------------------------------------------------------------------
1 | # Rime schema settings
2 | # encoding: utf-8
3 |
4 | schema:
5 | schema_id: xuma_52p_qshare
6 | name: 徐码五二
7 | version: "2021-03-26"
8 | author:
9 | - 發明人 徐国银先生
10 | - rime schema by Q
11 | description: |
12 | 徐码简繁通打五二顶版
13 | 三重注解、双重反查、屏蔽词组、全码后置、简入繁出...
14 | 将普通徐码略作改造,五码顶二码上屏
15 | https://ace-who.github.io/rime-xuma/
16 | dependencies:
17 | - xuma_qshare
18 | - xuma_52p_long
19 | - xuma_52p_reverse
20 | - xuma_spelling_pseudo
21 | - luna_pinyin
22 | - stroke
23 |
24 | __patch:
25 | - xuma_52p_qshare.custom:/patch?
26 | - symbols:/patch?
27 |
28 | switches:
29 | - options: [ gb2312, gbk, big5, utf8 ]
30 | states: [ gb2312, GBK, BIG5, UTF-8 ]
31 | reset: 1
32 | - name: ascii_mode
33 | reset: 0
34 | states: [ 中文, 西文 ]
35 | - name: full_shape
36 | states: [ 半角, 全角 ]
37 | - name: simplification
38 | states: [ 漢字, 汉字 ]
39 | - name: traditionalization
40 | reset: 0
41 | states: [ 简体保持, 簡入繁出 ]
42 | - name: ascii_punct
43 | states: [ 。,, ., ]
44 | # 切换热键由 xuma_spelling/lua 下的 cycle_key 和 switch_key 定义
45 | - options:
46 | - xuma_spelling.off
47 | - xuma_spelling.lv1
48 | - xuma_spelling.lv2
49 | - xuma_spelling.lv3
50 | states: [ 〇注解, 一重注解, 二重注解, 三重注解 ]
51 | reset: 0
52 | - name: xuma_postpone_fullcode # 仅作用于单字。
53 | reset: 1
54 | states: [ =原始排序, ↓全码后置 ]
55 | - name: single_char_only
56 | states: [ 词组派, 单字派 ]
57 | - name: preedit_lazy_clock
58 | # 切换热键由 xuma_52p_precand/lua 下的 cycle_key 和 switch_key 定义
59 | - options:
60 | - xuma_52p_precand.off
61 | - xuma_52p_precand.brief
62 | - xuma_52p_precand.detailed
63 | states:
64 | - 正常预显 # 不修改缓冲区 preedit 显示内容
65 | - 预显候选 # 在 preedit 中分段提示顶功候选
66 | - 详示候选 # 更详细的顶功候选提示
67 | reset: 0
68 |
69 | engine:
70 | processors:
71 | - ascii_composer
72 | - recognizer
73 | - lua_processor@xuma_spelling_processor
74 | - lua_processor@xuma_52p_precand_processor
75 | - key_binder
76 | - speller
77 | - punctuator
78 | - selector
79 | - navigator
80 | - express_editor
81 | segmentors:
82 | - ascii_segmentor
83 | - matcher
84 | - abc_segmentor
85 | - affix_segmentor@long
86 | - affix_segmentor@luna_pinyin_lookup
87 | - affix_segmentor@stroke_lookup
88 | - affix_segmentor@reverse_lookup
89 | - punct_segmentor
90 | - fallback_segmentor
91 | translators:
92 | - punct_translator
93 | - history_translator@history
94 | - table_translator
95 | - script_translator@long
96 | - script_translator@luna_pinyin_lookup
97 | - table_translator@stroke_lookup
98 | - table_translator@make_phrase
99 | - lua_translator@os_env
100 | - lua_translator@helper
101 | filters:
102 | - lua_filter@single_char_only
103 | - charset_filter@gb2312
104 | - charset_filter@gbk
105 | - charset_filter@big5
106 | # - charset_filter@utf8 # 该组件在 librime 1.6.* 以后错误过滤字符,暂时停用
107 | - simplifier@simplify
108 | - simplifier@traditionalize
109 | - reverse_lookup_filter@luna_pinyin_reverse_lookup
110 | - reverse_lookup_filter@stroke_reverse_lookup
111 | - lua_filter@xuma_spelling@xmsp
112 | - lua_filter@xuma_spelling@xmsp_for_rvlk
113 | - lua_filter@xuma_postpone_fullcode
114 | - lua_filter@xuma_52p_precand
115 | - lua_filter@preedit_lazy_clock
116 | - uniquifier
117 |
118 | single_char_only:
119 | tags:
120 | __include: reverse_lookup/extra_tags
121 | __append: [ long, make_phrase, reverse_lookup ]
122 | # 不过滤 abc 以防由于用户屏蔽词组导致一、二码的候选唯一从而自动上屏。
123 |
124 | # 防止对 punct 进行过滤
125 | gb2312:
126 | tags:
127 | __include: reverse_lookup/extra_tags
128 | __append: [ abc, long, make_phrase, reverse_lookup ]
129 | gbk: { __include: gb2312 }
130 | big5: { __include: gb2312 }
131 |
132 | simplify:
133 | __include: gb2312
134 | option_name: simplification
135 | tips: all
136 |
137 | traditionalize:
138 | __include: gb2312
139 | opencc_config: s2t.json
140 | option_name: traditionalization
141 | tips: all
142 | comment_format:
143 | - xform/^/(/
144 | - xform/$/)/
145 |
146 | lua_reverse_db:
147 | spelling: xuma_spelling_pseudo
148 | code: xuma
149 | code_to_text: xuma_52p_reverse
150 |
151 | xuma_52p_precand:
152 | tags: [ abc, long ]
153 | lua:
154 | cycle_key: 'Control+d'
155 |
156 | xuma_spelling:
157 | lua:
158 | switch_key: 'Control+c'
159 | cycle_key: 'Shift+Control+C'
160 | # 注意写法:Shift 在前,Control 在后。
161 |
162 | xmsp:
163 | tags: [ abc, long, make_phrase, punct ]
164 |
165 | xmsp_for_rvlk:
166 | tags:
167 | __include: reverse_lookup/extra_tags
168 |
169 | xuma_postpone_fullcode:
170 | tags: [ abc, long, make_phrase ]
171 | lua:
172 | # max_index: 6 # 最大后置位置,默认为 4
173 |
174 | speller:
175 | alphabet: zyxwvutsrqponmlkjihgfedcba[;'
176 | initials: zyxwvutsrqponmlkjihgfedcba
177 | delimiter: " `"
178 | algebra:
179 | - erase/^\*?[a-z]{3,}$/ # 忽略3码以上词条,精简主棱镜;星号开头的是特码
180 | - xform/_1/\[/
181 | - xform/_2/;/
182 | - xform/_3/'/
183 | auto_select: true
184 |
185 | translator:
186 | dictionary: xuma_52p
187 | prism: xuma_52p_qshare
188 | enable_completion: false
189 | enable_sentence: false
190 | enable_user_dict: false
191 | enable_encoder: false
192 | encode_commit_history: false
193 | # preedit_format:
194 | # - xform/$/\t〔主〕/
195 |
196 | # 结合 recognizer,仅翻译长度为三到四的输入段。
197 | long:
198 | tag: long
199 | dictionary: xuma_52p_long
200 | enable_user_dict: false
201 | enable_sentence: false
202 | # preedit_format:
203 | # - xform/$/\t〔长〕/
204 |
205 | make_phrase:
206 | dictionary: xuma
207 | prism: xuma_qshare
208 | user_dict: xuma
209 | enable_encoder: true
210 | enable_user_dict: true
211 | enable_sentence: true
212 | preedit_format:
213 | - xform/$/\t〔造词〕/
214 | tag: make_phrase
215 |
216 | history:
217 | input: dl
218 | size: 1
219 | initial_quality: 2000
220 |
221 | reverse_lookup:
222 | tag: reverse_lookup
223 | prefix: "`" # 反查引导符「`」
224 | # suffix: # 反查关闭符,暂不定义
225 | tips: 【反查:拼音+笔画】
226 | closing_tips: 【反查关闭】
227 | # preedit_format:
228 | # - xform/([nljqxy])v/$1ü/
229 | extra_tags:
230 | - luna_pinyin_lookup
231 | - stroke_lookup
232 |
233 | luna_pinyin_lookup:
234 | tag: luna_pinyin_lookup
235 | dictionary: luna_pinyin
236 | prefix: '`P'
237 | tips: 【朙月拼音反查】
238 | closing_tips: 【反查关闭】
239 | initial_quality: 0.2
240 |
241 | stroke_lookup:
242 | tag: stroke_lookup
243 | dictionary: stroke
244 | prefix: '`B'
245 | tips: 【五笔画反查】
246 | closing_tips: 【反查关闭】
247 | initial_quality: 0.5
248 | preedit_format:
249 | - 'xform/^([hspnz]+)$/$1\t(\U$1\E)/'
250 | - xlit/HSPNZ/一丨丿丶乙/
251 |
252 | luna_pinyin_reverse_lookup:
253 | tags: [ luna_pinyin, luna_pinyin_lookup ]
254 | dictionary: xuma
255 |
256 | stroke_reverse_lookup:
257 | __include: luna_pinyin_reverse_lookup
258 | tags: [ stroke_lookup ]
259 |
260 | punctuator:
261 | import_preset: default
262 |
263 | # 本节点仅用于被 __patch 指令引用
264 | key_bindings:
265 | __append:
266 | - { when: always, accept: "Control+Shift+F", toggle: traditionalization }
267 | - { when: composing, accept: "Control+s", toggle: single_char_only }
268 | - { when: composing, accept: "Control+t", toggle: preedit_lazy_clock }
269 | - { when: composing, accept: Tab, send: bracketleft }
270 |
271 | key_binder:
272 | bindings:
273 | __patch:
274 | - key_bindings:/emacs_editing?
275 | - key_bindings:/move_by_word_with_tab?
276 | - key_bindings:/paging_with_minus_equal?
277 | - key_bindings:/numbered_mode_switch?
278 | - key_bindings
279 | # 可仿照 key_bindings 根节点在 *.custom.yaml 文件中添加按键绑定。
280 | - xuma_52p_qshare.custom:/key_bindings?
281 |
282 | recognizer:
283 | # import_preset: default
284 | patterns:
285 | long: "(?