├── 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 | ![三重注解](demo/tripple_comment.png) 33 | 34 | ![符号编码](demo/symbols_jt_comment_xuma.png) 35 | ![符号编码](demo/symbols_xz_comment_xuma.png) 36 | 37 | 方案自带说明: 38 | 39 | ![自带说明](demo/help.gif) 40 | 41 | 快捷键演示: 42 | 43 | ![快捷键效果](demo/shortcut_keys.gif) 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 | ![自动造词](demo/encode_commit_history_01.png) 104 | 105 | ![自动造词](demo/encode_commit_history_02.png) 106 | 107 | ![自动造词](demo/encode_commit_history_03.png) 108 | 109 | ![自动造词](demo/encode_commit_history_04.png) 110 | 111 | 上屏成词之后: 112 | 113 | ![自动造词](demo/encode_commit_history_05.png) 114 | 115 | ![自动造词](demo/encode_commit_history_06.png) 116 | 117 | ## 使用说明 118 | 119 | 自带说明请善加利用: 120 | 121 | ![自带说明](demo/help.page1.png) 122 | ![自带说明](demo/help.page2.png) 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 | ![反查繁体](demo/reverse_lookup_traditional.png) 158 | ![反查简体](demo/reverse_lookup_simplified.png) 159 | 160 | 更多细节演示: 161 | 162 | ![自造词注解](demo/user_dict_comment.png) 163 | 164 | ![环境变量支持](demo/environment_variable.png) 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 | DeleteShift + 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 | ![单字慢速](demo/slow_single_style.gif) 176 | ![单字慢速](demo/slow_single_style_with_precand.gif) 177 | 178 | ![简词慢速](demo/slow_phrase_style.gif) 179 | ![简词慢速](demo/slow_phrase_style_with_detailed_precand.gif) 180 | 181 | 以下是单字打法和简词打法的正常速度动态演示: 182 | 183 | ![单字常速](demo/single_style_with_precand.gif) 184 | ![简词常速](demo/phrase_style_with_precand.gif) 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: "(?