韵母键族连滑机制是岁寒输入法中引入的一个全新的连滑机制,利用该机制,现在岁寒输入法可以做到在一次滑行操作内对大部分的汉语拼音进行输入的效果,显著提高了输入的效率和体验,下面请跟着我的脚步,一起来探索韵母键族的奥秘吧。
相关链接
关于岁寒十二宫格韵母键族连滑机制的补充说明
关于韵母连滑机制调整的说明
何为键族
在解释韵母键族之前,我要先解释何为键族。
键族这个概念对于大多数岁寒输入法的老用户来说,都可能是陌生的。原因在于,此前在对岁寒输入法的使用说明中我都刻意地不去使用这个概念,而是用下一行再下一行来说明他的用法,只言其然,而不言其所以然,目的是为了不吓初窥门径的学习者。但键族其实是岁寒输入法拼音输入方案中最为核心的概念,没有这个概念,则岁寒输入法拼音输入方案将失去理论上的支撑。如今要引入韵母键族,这个概念则更是绕不过去了。
那么,键族到底是什么呢?
键族,在岁寒输入法的专利文件中是这么解释的:输入法规定了一部分键位在接受某一个相同的操作时,会被解释为相同的键义。而岁寒输入法此前一直在使用的键族有三个:h族、n族和g族。
看下面这张图就会很容易理解了。关于岁寒输入法的用法请看岁寒输入法的使用教程
正是因为岁寒输入法定义了这三个键族,做到了对任意一个声母或者韵母在一个操作(点击或者连滑)之内完成输入。
此前,我只叫这三个键族为键族而已,但从今天开始,我要对他们重新定名,改叫他们为声母键族,与之相对的,是一名新成员——韵母键族。新增的韵母键族共有五个,分别是a键族、o键族、e键族、i键族和u键族,正是我们非常熟悉的六个韵母中的五个。之所以不引入v键族,是因为u键族在滑行时与v键族等价(lv和nv两种情况除外,考虑到这两个拼音的使用频率比较低,没有必要为之专门引入一个键族),所以有这五个键族就足够了。
韵母键族
下面,我们来解释一下何为韵母键族。
韵母键族的定义
为了方便我们理解韵母键族,我们需要给韵母键族下一个定义,在键族这个概念的基础上,我们将韵母键族定义如下:在滑行操作进入连滑阶段后,被滑经的键位将根据一定的规则来判定其被解释或不被解释成其所预置的韵母键族的键义。
所谓韵母键族的键义,所指的就是,例如一个键位被预置为a键族,则其韵母键族的键义即为a,以此类推。
初探韵母键族的布局
在使用韵母键族之前,我们需要先将他们布局到键盘上。由于声母键族已经占据了键盘的横向,所以我们“只好”将韵母键族布局到纵向,为了便于记忆,我们取第二行上韵母为韵母键族的标定,于是我们就有了如下的键盘。
可以看到,声母键族与韵母键族形成了合纵连横的态势,从而奠定了岁寒输入法新的连滑机制的基础。
考虑到u键族和i键族相距甚远,而且左右两边都并没有被利用起来,于是我们可以再分别增加一列u键族和一列i键族,于是我们得到了一个新的布局:
为了便于我们了解韵母键族的位置,岁寒输入法可以将韵母键族的键义显示在键位的右上角:
当然,如果你不喜欢这些上标的效果,也是可以关闭的。
韵母键族的使用规则
当韵母键族和声母键族在键盘纵横交错的时候,一个键位上会同时存在多个键义,就像此前的声韵混合键一样,因此,我们要需要一些规则来保证他们可以相互协作,而不是相互掣肘。
我们规定新的连滑机制的规则如下:
韵母键族只在滑行操作进入连滑阶段后起作用。
解释:既有的岁寒输入法的滑行规则在叠加韵母键族之后依然成立,依然有效。所谓进入连滑阶段,即是用户输入了声母之后仍继续滑行之后的阶段。在启用韵母键族后,新的连滑机制将取代原有的连滑机制。在滑行的过程中,优先取键位的主键义。
解释:所谓的主键义,即是键位的核心键义,比如A键位的主键义即是a。这一点主要是对于韵母键而言,因为进入连滑阶段之后,大多数声母都不会再出现了,我们基本上可以认为在滑至声母键上时,主键义是不起作用的。在滑行的过程中,当前键位与上一个键位的关系为:
同列不同行且为下滑时,优先取声母键族的键义;
其他情况,优先取韵母键族的键义;
解释:简单地讲就是,优先取不相同的键族的键义,否则取声母键族的键义。这里用的是“优先”,是指,当已取的键义无法组合形成合法拼音时,输入法会退而求其次,取另一个键族的键义。对于n键族和g键族在连滑时变为一个等价的n/g键族,其表现方式如下:
当已输入的部分需要一个n来构成带n的韵母时,则n/g键族表现为n键族;
当已输入的部分需要一个g来构成带g的韵母时,则n/g键族表现为g键族;
解释:即在滑行时,韵母在遇到n键族或g键族时(无论先遇到的键族是n键族还是先遇到g键族),且在能够组成ng结尾的韵母时,总是先组成带n的韵母之后再组成带g的韵母;
有了上述规则之后,我们来看看韵母键族是如何在新的连滑机制中起作用的。
我们从C滑出为例来解释新的连滑机制,如下图所示
对于这条路径,我依顺序一一解释:
C->R
此时操作未进入连滑阶段,按照此前的规则处理,所以结果为ch,此时声母已输入完毕,继续滑行的话,这个操作将进入连滑阶段;C->R->L
触点由R斜滑到L,R和L的声母键族(h键族与n键族)和韵母键族(i键族和u键族)都不同,按上述的规则,优先取n键族的键义,但显然,n与已有的输入无法构成合法的拼音,因此退而求其次,再取u键族的键义,得到chu;C->R->L->K
触点从L横向滑动到K,由于L和K的声母键族都是n键族,而韵母键族不同,因此取韵母键族——i键族的键义,得到chui,而不是取n键族的键义得到chun。
由此可见,引入了韵母键族之后,岁寒输入法的连滑功能得到了极大的增强,以往无法使用连滑操作输入或者通过连滑操作输入时滑行成本过大问题得到了极好地解决。
但是韵母键族的故事并没到此结束,岁寒还给你带来了另外的惊喜。
伴随韵母键族一起被引入岁寒输入法的,还有一个新的概念——暗键位。
暗键位
暗键位,是相对于实键位而言的。所谓实键位,即是键盘上标有字母的26个键位,而剩下的9个键位则是暗键位。9个?你可能会诧异,键盘上去掉26个字母键位剩下的不是7个键位吗?我所指的9个键位,是将整个键盘分成5行7列之后的计算结果。为了便于理解,此时我们先将符号建和操作键从键盘上移除,于是我们会得到这样的布局:
图3.1中用虚线圈出的部分就是我所指的暗键位。
所谓暗键位,即是不可见,但仍能产生作用的键位。
虽然暗键位不可见,但这并不妨碍我们将它们定义为键族的一部分。只要将已有的键族分布进行扩展,我们就可以得到下面的键位布局:
我们将每一个韵母键族向下扩展到底,将g键族横向扩展,并将底部的暗键位都定义为n键族。如此一来,整个键盘的任意一个键位都具有了键义,这对连滑操作是极有益助的。
比如我们可以如此输入lun:
我还是按滑行顺序来一一解释结合逻辑,由于暗键位没有主键值,我用[x,y]来表示第x行第y列的键位:
L ->[4,7]
由于[4,7]是暗键位,因此不用考虑主键值的问题,虽然[4,7]与L的韵母键族相同,而声母键族不同,但显然,取[4,7]的声母键族键义——g,并不能与之结合成合法的拼音,故退而求其次,取韵母键族的键义u,故得到lu;L ->[4,7]->[5,7]
由于[5,7]与[4,7]的声母键族不同而韵母键族相同,故取声母键族的键义——n,故得到lun;
可见,暗键位会给一部分拼音的连滑带来方便,但暗键位的意义并不仅于此。由于暗键位的引入,键盘的边界得到了扩展,滑行的施展空间得到扩充,令布局不再显得那么局促,下面你将会看到暗键位是如何发挥出作用的。
再论韵母键族的布局
在前面的讨论中,我们给出的键盘的整体布局是这样的:
这个布局的显著特点是规整,我们只需要花一点时间就可以记住现在每一个键位上的韵母键族。但这个布局的缺点也很明显——呆板。显然,有些能相互结合的声母和韵母键族之间的距离还是太遥远,这使得要在他们之间滑行得到拼音的输入成本(即滑行距离)太高。我给这种现象取一个名称,叫布局的局部结合性不好(从任意声母出发,连滑得到的拼音越多,所需的滑行成本越小,则其布局的局部结合性越好)。现在,我们要做的就是提高已有布局的局部结合性。
虽然岁寒输入法的声母键族的位置已经是定死的,但韵母键族却不是,因此为了能够更好地发挥韵母键族的作用,我在现有布局的基础上对韵母键族的分布进行了调整,得出如下的布局:
图中我已用红色框线和橙色框线将与之前的布局中韵母键族不同的地方圈画出来。
其中我移除了大部分韵母键上面的韵母键族,理由是:
在韵母键上,韵母键族易受主键义影响而无法表达,反而令人产生混淆。而在v上增加u键族,是为了改善这个键位的局部结合性。
其他部分的调整都是出于改善局部结合性的目的,这部分不好用语言描述,下面我用图片加以说明。(为避免路径相互遮挡,图片中我只给出与优化部分有关的拼音,其他拼音的滑行路径请自行探索)
- 布局左上角的优化情况
-
S键位周边的优化情况
当R键位被预置为a键族后,一切都豁然开朗。如今,shuang和shang都可以从S键位出发,以正比于字母数量的滑行成本获得,对于C键位出发的拼音也大抵如此。
- X键位周边的优化情况
从X键位周边的情况可以看出,韵母键族和暗键位的加入使得以往不可能做到的事情变得易如反掌,字母和键族们在这里左右逢源,总是可以遇到相熟的老友,一起结伴同行。
-
底行暗键位的优化情况
由于X键周边的情况前面已经给出,这里就不再重复了。
写在最后
至此,关于韵母键族和暗键位的故事就基本上讲完了,不知道这两个新成员是否给你带来了惊喜?
虽然我所给出的键盘布局还没有达到全连滑的程度(即实现所有的拼音都能通过就近连滑实现),但与此同时,这个键盘布局也是在对键位布局一字未改的前提下给出的。可以想见,通过调整键位布局和键族布局能够组合出千千万万种变化来,达成全连滑的效果在理论上是完全可能的,所以这个故事其实还差个结局,你来讲不?