顶功吧 关注:169贴子:1,402
  • 14回复贴,共1

一种大编码空间顶功输入法的简单实现

取消只看楼主收藏回复

一楼防吞


IP属地:北京1楼2023-04-22 23:50回复
    早先设计大编码空间顶功方案(https://tieba.baidu.com/p/7607713197)时,需要一种20键的形码方案,原想全新设计,力有不逮,放弃。
    现提供一种该方案的简单实现。


    IP属地:北京2楼2023-04-22 23:51
    回复
      该方案基于Rime平台,制作该方案的顶功输入法,需要掌握如下技能:
      1:会一种双拼
      2:会一种形码
      3:简单的excel操作
      4:简单的Rime方案修改能力


      IP属地:北京5楼2023-04-23 00:11
      回复

        分别将拼音字库、笔画字库和形码字库复制到Excel。
        以拼音字库为基础,使用VLOOKUP函数获取拼音字库每字的笔画和形码,使用RIGHT函数获取末笔。
        如图所示。


        IP属地:北京7楼2023-04-23 01:17
        回复
          本方案中排(ASDFGLJKL;)仅用作声母,因此需归并、迁移形码编码的中排按键至上下两排,归并迁移方案请自行设计。依据设计方案编辑形码编码。
          依旧以“的”说明,“的”字徐码为:uswb。假设将s归并到了W,置换后“的”字徐码为:UWWB,全码为:de5uwwb


          IP属地:北京8楼2023-04-23 01:34
          回复
            为便于记忆,最大程度利用形码技能的肌肉记忆,可根据舒适度进行同指归并,例如:
            S归并到W上,D归并到E上,F归并到V上。


            IP属地:北京9楼2023-04-23 01:40
            回复
              完成字库后,开始编写Rime方案。


              IP属地:北京10楼2023-04-23 01:47
              回复
                忘记了一点,为了更容易的编写Rime的转换规则,结合注音,日语假名,将拼音改为两字符表示,具体做法为:
                1,注音中单字符表示的声母韵母,直接使用注音符号,例如,“i”的注音符号是:“ㄧ”,“ao”的注音符号是“ㄠ”。
                2,注音中双字符表示的韵母,借用假名表示,例如:“iao”用注音符号表示为“ㄧㄠ”,借用假名表示为:“タ”。
                3,汉语拼音中,“w”和“y”实际上并非声母,而是“u”和“i”的转写,注音中并无声母”w“和”y“,例如,”要“字的拼音为:“yao”,其注音和声母“iao”相同,均为:“ ㄧㄠ”。故需要为“w”和“y”分配假名表示。
                4,根据首字母的不同,为“a”,“e”,“o”零声母分别分配声母占位符号。
                如图所示。


                IP属地:北京11楼2023-04-23 08:39
                回复
                  此时,单字的编码格式为:

                  相比于拼音,更易于编写Rime的转换规则。


                  IP属地:北京12楼2023-04-23 08:47
                  回复
                    接下来开始编写Rime方案。
                    1,复制一份可用的Rime方案文件,将其改名。例如:将“luna_pinyin.schema.yaml”改为“dinggong.schema.yaml”。
                    2,按图编辑dinggong.shcema.yaml的schema字段

                    3,编辑dinggong.schema.yaml的spella字段。
                    本方案使用31键,

                    4,根据同指归并原则,归并按键。
                    例如:将声母“Q”和“Z”归并到按键“A”上,将韵母“en”(自然码en在F上)设置到V上,语句:
                    xform/ㄑ/A/
                    xform/ㄗ/A/
                    xform/ㄣ/V/
                    (“ㄑ”表示“Q”,“ㄗ”表示“A”)
                    所有声母韵母归并完成后,如果为双拼方案,此时应该已经可以输入单字了。可以使用转制后的二字符编码拼音字库测试正确性。


                    IP属地:北京14楼2023-04-23 09:26
                    回复
                      5,将声调和笔画归并,例如,将“qwert”设置为一声区,并为其分配笔画。详见:https://tieba.baidu.com/p/7607713197
                      (该文以本人自用的键盘布局为例说明,设计思路与qwerty布局完全一致)
                      编写声调笔画的归并语句。
                      例如:1Z表示一声,末笔为“折”(Z),归并1Z到按键“B”上:
                      - xform/1z/b/


                      IP属地:北京15楼2023-04-23 09:39
                      回复
                        完成上述所有后,spella字段如图所示。

                        此时,应该可以使用全码输入单字了。
                        但全码7码,过于繁冗。
                        我们需要更短的码长输入汉字。


                        IP属地:北京16楼2023-04-23 09:49
                        回复
                          到此,该方案已经可以输入单字,但并未如设想那样顶字上屏。
                          尚需一个实现顶功算法的lua插件。
                          该插件的获取和用法:
                          https://github.com/xkjd27/rime_jd27c/blob/e38a8c5d010d5a3933e6d6d8265c0cf7b56bfcca/rime/lua/jd27_topup.lua


                          IP属地:北京18楼2023-04-23 10:08
                          回复
                            为了更方便的输入汉语,我们还需要为该方案添加词库。
                            词库编码规则如下:
                            二字词(全码6码):
                            首字声母+次字声母+首字首形+首字次形+次字首形+次字次形
                            三字词(全码7码):
                            首字声母+次字声母+三字声母+首字首形+次字首形+三字首形+三字次形
                            四字及以上词(全码8码):
                            首字声母+次字声母+三字声母+末字声母+首字首形+次字首形+三字首形+三字首形+末字首形
                            注意到全码过长,我们希望在三码四码时输入汉字。
                            - derive/^([asdfghjkl;]{2,4})([qwerrtyuiopzxcvbnm,\./]).+$/$1$2/
                            该语句实现:二字词三码、三字词四码、四字词五码输入。
                            - derive/^([asdfghjkl;]{2,4})([qwerrtyuiopzxcvbnm,\./]{2}).+$/$1$2/
                            该语句实现:二字词四码、三字词五码、四字词六码输入。
                            - derive/^([asdfghjkl;]{2,4})([qwerrtyuiopzxcvbnm,\./]{3}).+$/$1$2/
                            该语句实现:二字词五码、三字词六码、四字词七码输入。
                            多数情况下,四字词五码即可完成输入。
                            此时,spella如图所示:


                            IP属地:北京19楼2023-04-23 10:46
                            回复
                              该方案的最大优点是字词编码空间分离,拥有尽w乎x无限的词语编码空间。
                              甚至会因词语过多导致部署失败。
                              在已经掌握双拼和一种形码的情况下,该方案可基于现有技能,快速体验顶功输入法。


                              IP属地:北京20楼2023-04-23 10:50
                              回复