岁寒输入法一直致力于探索更创新、更高效、更有趣的中文滑行输入方案。韵母键族连滑机制,是岁寒输入法引入的一种全新的连滑机制,同时也是为中文滑行输入领域开辟的一处新疆界。如今利用该机制,岁寒输入法可以做到在一次滑行操作内对大部分的汉语拼音进行输入的效果,显著提高输入的效率和体验。下面请跟着我的脚步,一起来探索韵母键族的奥秘吧。

何为键族

在解释韵母键族之前,我要先解释何为键族。

键族,这个概念对于大多数岁寒输入法的老用户来说,可能仍是陌生的。原因在于,此前在对岁寒输入法的使用说明中,我都刻意地不去使用这个概念,而是用下滑一行再下滑一行这种通俗易懂的语句来说明他的用法。只言其然,而不言其所以然,目的就是为了不吓跑初窥门径的岁寒学习者。但键族其实是岁寒输入法拼音输入方案中最为核心的概念,没有这个概念,则岁寒输入法拼音输入方案将失去理论上的支撑而土崩瓦解。如今要引入韵母键族,这个概念则更是绕不过去了。

那么,键族到底是什么呢?

岁寒输入法的专利文件中是这么定义键族的:输入法规定了一部分键位在接受某一个相同的操作时,会被解释为相同的键义。而岁寒输入法此前一直在使用的键族有三个:h键族、n键族和g键族。

看下面这张图就会很容易理解了。关于岁寒输入法的用法请看岁寒输入法的使用教程

图1.1
图1.1

正是因为岁寒输入法定义了这三个键族,做到了对任意一个声母或者韵母在一个操作(点击或者连滑)之内完成输入。

此前,我只叫这三个键族为键族,但从今天开始,我要对他们重新定名,改叫他们为声母键族,与之相对的,是一名新成员——韵母键族。

新增的韵母键族共有五个,分别是a键族、o键族、e键族、i键族和u键族。正是我们非常熟悉的六个韵母中的五个。之所以不引入v键族,是因为u键族在滑行时与v键族等价,有此五族,足矣。


韵母键族

下面,我们来解释一下何为韵母键族。

韵母键族的定义

为了方便我们理解韵母键族,我们需要给韵母键族下一个定义,在键族这个概念的基础上,我们将韵母键族定义如下:在滑行操作进入连滑阶段后,被滑经的键位将根据一定的规则来判定其被解释或不被解释成其所预置的韵母键族的键义

所谓韵母键族的键义,所指的就是,例如一个键位被预置为a键族,则其韵母键族的键义即为a,以此类推。

初探韵母键族的布局

在使用韵母键族之前,我们需要先将他们布局到键盘上,在键盘上有了自己的位置,他们才能发挥作用。由于声母键族已经占据了键盘的横向,所以我们「只好」将韵母键族布局到键盘的纵向。为了便于记忆,我们取第二行上韵母为韵母键族的标定,于是我们就有了如下的键盘。

图2.1
图2.1

可以看到,声母键族与韵母键族形成了合纵连横的态势,从而奠定了岁寒输入法新的连滑机制的基础。

考虑到u键族和i键族相距甚远,而且左右两边都没有被利用起来,于是我们可以再分别增加一列u键族和一列i键族,于是我们得到了一个新的布局:

图2.2
图2.2

为了便于我们了解韵母键族的位置,岁寒输入法可以将韵母键族的键义显示在键位的右上角:

图2.3
图2.3

当然,如果你不喜欢这些上标的效果,也可以将他们关闭。

韵母键族的使用规则

此时韵母键族和声母键族在键盘上纵横交错,一个键位上同时存在着多个键义,就像此前的声韵混合键一样,因此,我们要需要一些规则来保证他们可以相互协作,而不是相互掣肘。

我们规定新的连滑机制的规则如下:

  1. 韵母键族只在滑行操作进入连滑阶段后起作用。
    解释:既有的岁寒输入法的滑行规则在叠加韵母键族之后依然成立,依然有效,在使用上不受影响。所谓进入连滑阶段,即是用户输入了声母之后仍继续滑行的后续阶段。在启用韵母键族后,新的连滑机制将取代原有的连滑机制。

  2. 在滑行的过程中,优先取键位的主键义。
    解释:所谓的主键义,即是键位的核心键义,比如A键位的主键义即是a。这一点主要是对于韵母键而言,因为进入连滑阶段之后,大多数声母都不会再出现了,我们基本上可以认为在滑至声母键上时,主键义是不起作用的。

  3. 在滑行的过程中,当前键位与上一个键位的关系为:
    韵母键族相同而声母键族不同时,优先取声母键族的键义;
    声母键族相同而韵母键族不同时,优先取韵母键族的键义;
    声母键族不同,韵母键族也不同时,优先取声母键族的键义;
    解释:简单地讲就是,优先取不相同的键族的键义,否则取声母键族的键义。这里用的是「优先」,是指,当已取的键义无法组合形成合法拼音时,输入法会退而求其次,取另一个键族的键义。

有了上述规则之后,我们来看看韵母键族是如何在新的连滑机制中起作用的。

我们从C滑出为例来解释新的连滑机制,如下图所示:

图2.4
图2.4

对于这条路径,我依顺序一一解释:

  1. C->R
    此时操作未进入连滑阶段,按照此前的规则处理,所以结果为ch,此时声母已输入完毕,继续滑行的话,这个操作将进入连滑阶段;

  2. C->R->L
    触点由R斜滑到L,R和L的声母键族(h键族与n键族)和韵母键族(i键族和u键族)都不同,按上述的规则,优先取n键族的键义,但显然,n与已有的输入无法构成合法的拼音,因此退而求其次,再取u键族的键义,得到chu;

  3. C->R->L->K
    触点从L横向滑动到K,由于L和K的声母键族都是n键族,而韵母键族不同,因此取韵母键族——i键族的键义,得到chui,而不是取n键族的键义得到chun。

由此可见,引入了韵母键族之后,岁寒输入法的连滑功能得到了极大的增强,以往无法使用连滑操作输入或者通过连滑操作输入时滑行成本过大问题得到了极好地解决。

但是韵母键族的故事并没到此结束,岁寒还给你带来了另外的惊喜。

one more thing!

伴随韵母键族一起被引入岁寒输入法的,还有一个新的概念——暗键位

暗键位

暗键位,是相对于实键位而言的。所谓实键位,即是键盘上标有字母的26个键位,而剩下的9个键位则是暗键位。9个?你可能会诧异,键盘上去掉26个字母键位剩下的不是7个键位吗?我所指的9个键位,是将整个键盘分成5行7列之后的计算结果。为了便于理解,我们先将符号键和操作键从键盘上移除,于是我们会得到这样的布局:

图3.1
图3.1

图3.1中用虚线圈出的部分就是我所指的暗键位。

所谓暗键位,即是不可见,但仍能产生作用的键位。

虽然暗键位不可见,但这并不妨碍我们将它们定义为键族的一部分。只要将已有的键族分布进行扩展,我们就可以得到下面的键位布局:

图3.2
图3.2

我们将每一个韵母键族向下扩展到底,将g键族横向扩展,并将底部的暗键位都定义为n键族。如此一来,整个键盘的任意一个键位都具有了键义,这对连滑操作是极有益助的。

比如我们可以如此输入lun:

图3.3
图3.3

我还是按滑行顺序来一一解释结合逻辑,由于暗键位没有主键值,我用[x,y]来表示第x行第y列的键位:

  1. L ->[4,7]
    由于[4,7]是暗键位,因此不用考虑主键值的问题,虽然[4,7]与L的韵母键族相同,而声母键族不同,但显然,取[4,7]的声母键族键义——g,并不能与之结合成合法的拼音,故退而求其次,取韵母键族的键义u,故得到lu;

  2. L ->[4,7]->[5,7]
    由于[5,7]与[4,7]的声母键族不同而韵母键族相同,故取声母键族的键义——n,故得到lun;

可见,暗键位会给一部分拼音的连滑带来方便,但暗键位的意义并不仅于此。由于暗键位的引入,键盘的边界得到了扩展,滑行的施展空间得到扩充,令布局不再显得那么局促,下面你将会看到暗键位是如何发挥出作用的。

再论韵母键族的布局

在前面的讨论中,我们给出的键盘的整体布局是这样的:

图4.1
图4.1

这个布局的显著特点是规整,我们只需要花一点时间就可以记住现在每一个键位上的韵母键族。但这个布局的缺点也很明显——呆板。显然,有些能相互结合的声母和韵母键族之间的距离还是太遥远,这使得要在他们之间滑行得到拼音的输入成本(即滑行距离)太高。我给这种现象取一个名称,叫布局的局部结合性差(从任意声母出发,连滑得到的拼音越多,所需的滑行成本越小,则其布局的局部结合性越好)。现在,我们要做的就是提高已有布局的局部结合性。
虽然岁寒输入法的声母键族的位置已经是定死的,但韵母键族却不是,因此为了能够更好地发挥韵母键族的作用,我在现有布局的基础上对韵母键族的分布进行了调整,得出如下的布局:

图4.2
图4.2

图中我已用红色框线和橙色框线将与之前的布局中韵母键族不同的地方圈画出来。

其中我移除了大部分韵母键上面的韵母键族,理由是:

在韵母键上,韵母键族易受主键义影响而无法表达,反而令人产生混淆。而在v上增加u键族,是为了改善这个键位的局部结合性。

其他部分的调整都是出于改善局部结合性的目的,这部分不好用语言描述,下面我用图片加以说明。(为避免路径相互遮挡,图片中我只给出与优化部分有关的拼音,其他拼音的滑行路径请自行探索)

  • 布局左上角的优化情况

图4.3
图4.3


  • S键位周边的优化情况
    图4.4
    图4.4

当R键位被预置为a键族后,一切都豁然开朗。如今,shuang和shang都可以从S键位出发,以正比于字母数量的滑行成本获得,对于C键位出发的拼音也大抵如此。


  • X键位周边的优化情况

图4.5
图4.5

从X键位周边的情况可以看出,韵母键族和暗键位的加入使得以往不可能做到的事情变得易如反掌,字母和键族们在这里左右逢源,总是可以遇到相熟的老友,一起结伴同行。


  • 底行暗键位的优化情况
    图4.6
    图4.6

由于X键周边的情况前面已经给出,这里就不再重复了。

需要指出的一点是,岁寒输入法对g键族做了两个小小的优化措施:

  1. 当取韵母键族的键义不能得到有用的拼音组合时,若存在xg形式的组合,岁寒输入法会将其补充为xng的韵母。比如上图中的ting,在得到ti之后,上滑到X键位,由于tia不存在,而取tig,于是将tig补充得到ting;
  2. 当不存在xng形式的韵母,而存在xn形式的韵母时,将xg变形为xn的韵母。比如图4.5中的shun即是由shug变形得到的。

写在最后

至此,关于韵母键族和暗键位的故事就基本上讲完了,不知道这两个新成员是否给你带来了惊喜?

虽然我所给出的键盘布局还没有达到全连滑的程度(即实现所有的拼音都能通过就近连滑实现),但与此同时,这个键盘布局也是在对键位布局一字未改的前提下给出的。可以想见,通过调整键位布局和键族布局能够组合出千千万万种变化来,达成全连滑的效果在理论上是完全可能的,所以这个故事其实还差个结局,你来讲不?