我与多年的寒冷
首先,我想介绍一下我
郑重地,我叫Nihan,我想给大家介绍一个叫Suhan输入法的应用程序,对了,你猜对了,我是Suihan输入法的作者。
“寒冷岁月”二字
“来自论语:子曰,岁寒,再知松柏枯萎。但后来我发现了一个更时髦的解释——“冬天”类似于《冰与火之歌》中临冬城史塔克家族的座右铭《冬天来了》。
打开引擎
大多数时候,一个人做某事是有动机的,就像杀人一定有杀人的动机一样。在开发一个应用程序时,尤其是一个没有未来的应用程序,动机变得好奇。实际上,我只想在手机上写作。你看得出来,我的写作风格太奇怪了,你一定能看出我已经“练习”了,曾经我的梦想是成为一名小说家(现在仍然是)。当时我尝试了一些移动输入法,体验不尽如人意,输入复杂,效率一般,于是萌生了开发自己的输入法的想法。
这是我最初的动机,很简单,甚至有点中二。但动机会改变,一开始只是尝试,然后想用它来证明自己,然后就变成了一种坚持,变成了一种职业。
滑溜溜为王
它是
iPhone问世、Android开始盛行的时代,触摸屏的出现将手机的可控性提升到了更高的水平,但大多数手机还是用旧的点击输入,在我看来是很大的浪费。当时Swype滑翔输入法已经面世,但还不适合中文输入,却给了我很多启发。此后,利用手机的滑行特性,提高输入的效率和趣味性,成为诗涵的核心理念,这一理念至今未变。
但是一开始,输入法I
设想的不是现在的拼音输入方案,而是基于Wubi的改进类型,我做了旧的冷输入法1和旧的冷输入法2,但尝试的结果以失败告终。我从中学到的教训是,五笔不会导致这种情况。当然,我想失败的部分原因是我的 IME 界面太丑了,嗯......也许一半,嗯...也许大多数,嗯...或者也许全部。(上半部分是旧的冷输入法 1,下半部分是旧的冷输入法 2)。
于是我放弃了五冲程方案的尝试,开始思考更熟悉的拼音输入法是否可以与我的滑动概念相结合。
纵观当时的江河湖泊,拼音滑翔输入法已经被叫出来了,搜狗、百度、谷歌等大厂商嗅觉灵敏,自然能体会到滑翔输入对用户的吸引力有多大。但是,他们大多固守旧路,只在老QWERTY布局上做精彩的文章,利用自己的技术优势,用数学分析的方法提取用户滑行中的特点,从中得到用户真实的输入意图。这种方式有一个天然的缺点,那就是滑行距离太长,所以效率甚至不如点击式全拼输入法。
同时,也有敢于打破桎梏的人,先行者有AEVIOU蜂窝中文滑翔输入法、闪云滑翔输入法(但真的一点也不好),盛大也做了宏大的输入法。值得注意的是,他们都敢于对QWERTY键盘进行一些调整,以适应滑动输入的需求。然而,问题在于他们没有朝着正确的方向前进——他们都选择了滑行方案的动态布局。所谓动态布局,就是用户按下第一个字母后,在触点中心(或外围)出现一个新键盘,这样用户就可以轻松滑动到想要的键。也许我的描述不准确,但通常就是这样。方便用户滑行的意图自然是好的,但也存在一个天然的缺陷,那就是每个键可能对应一个完全不同的新键盘,如果用户想要快速打字怎么办?看来你必须记住所有的改变。因此,这种方法在效率方面也是有问题的,正确的方向应该是静态布局。
方案上的缺陷可以通过技术进步来弥补,但不可能真正解决这些问题。如果你想完全解决它,你需要重新设计计划。这意味着彻底打破QWERTY布局对我们思维的限制,想象出适合汉语拼音滑行的新布局,而不是改变一点,留下一块。既然不合适,就应该翻转重启,要相信“不破,就站不住脚”。
于是,我站在荒地上,开始务农。
布局方式
如果要在静态布局上实现高效的拼音滑行,则必须结合拼音的结构特性。经过研究,我发现汉语拼音在结构上很有特色,这里我指的是数学排列和组合,而不是音韵学。你可能不相信,我这个做拼音输入法的人,对音韵学几乎一无所知。
汉语拼音方案是由现存的26个英文字母改造而来的,我们应该感谢已故的周有光先生的天才创作。这里,我称a,o,e,i,u,v(习惯上我们使用v而不是ü)作为元音字母,其他字母称为元音字母,因此拼音的结构有两个重要的定律:
除了 zh, ch,sh,
其他元音只有一个字母,zh、ch、sh都以“h”为后缀;
元音中只有3个元音字母:n,g,
r, 其中 are 只有一个 “er”,元音总是附加在元音字母之后,当 n 与 g 存在时,n 总是在 g 之前。
如果将“er”视为特例,则元音和元音中有大量的3个后缀结构:h,n和g。
如果我们按照习惯做法,为了输入对应的字母而滑过对应的键,就不可能让所有其他元音在平面上最短的距离内接近这3个字母对应的键,这必然会导致不同的情况。
我问自己,是否有必要“滑动相应的键才能输入相应的字母”?例如,如果我想输入 sh,我必须从“s”滑到“h”吗?
这时我想起了高中化学中“家族”的概念,元素周期表中的每一根垂直列都是一个家族,同族中的元素都会有相似的化学性质。受此启发,我想,如果有一组键在滑行时都表现得像“h”,那么在输入 zh、ch 和 sh 时,在附近滑动还不够吗?n 和 g 的情况类似。那么这套钥匙适合多少个键呢?我认为,一条线应该是一个很好的单位。我模仿化学的概念,称它们为“H族”,“n族”和“G族”。
巧合的是入的拼音,拼音中最长的押韵只有4个字母,所以隋汉输入法的键盘有4行,除了第一行,正好剩下3行,所以一一对应3个键族。
然后,在研究了元音字母的位置后,我发现u,i和v更频繁地出现在a,o和e之前,因此u,i和v被放置在a,o和e上。但这又带来了一个问题,你我和n家相差一条线,进去、进去、进去、进去更麻烦。为了解决这个问题,我引入了人声混合键——在第二排找到两个元音作为滑行时你和我的替代品,即它们在点击时仍然是自己,但当滑出它们时,它们代表你或我。所以,我想出了以下布局。
配合以下输入规则
直接点击单个元音或元音获取;带 h 的元音从第一个字母滑动到第二行;带有 n 的元音从第一个字母滑动到第三行;带有ng的元音从首字母滑到第四行;使用y和rhone两个混音键可以快速输入un,in,ing;其他元音可以按字母顺序滑动;
从而在静态布局上实现“任何元音或元音都可以在一次操作中完成”的目标。可以看出,旧的冷输入法不仅仅是滑动,而是结合了点击和滑动两种操作,各有千秋。谁说滑行输入法只能有滑行操作?只有一个字母,滑行输入有点像裤子和放屁。
在这里,
隋汉输入法实际上借鉴了双拼输入法的核心思想,即拼音分为元音和元音,并将它们作为基本输入单位,而不是像全品那样使用字母作为输入单位。所以,我从一开始就向外界宣称,念韩输入法是“双拼变种”。也许你不相信,到目前为止,我还没有掌握任何双拼输入法的具体用法。
大多数滑动输入法都喜欢在一张幻灯片中键入拼音,您可能会说,这不是更有效吗?在某些情况下确实如此,但分离元音和元音并不是多余的,相反,它为 Nihan 输入法带来了极大的输入灵活性儿童教育网,并塑造了 Nihan IME 的许多独特特征。
没有歧义
在设计了旧冷输入法的布局和输入规则后,我惊讶地发现,老式冷输入法呈现出一个非常重要的特征——输入声音的无关紧要的意义。简单地说,任何滑行路径都清楚地指向某个元音或元音,并且没有歧义。
这有什么令人惊讶的?您知道,此功能在许多其他拼音输入法中不可用。或者以完整拼写和双重拼写为例。
在全拼音中,如果没有分手键,很多平时输入的拼音都是模棱两可的,比如“西安”也可能是“西安”,那么“帮”也可能是“甘”,这些情况其实很常见。我们通常不觉得的原因是,今天的输入法非常聪明,可以向我们呈现两种可能的结果,或者预测我们目前打算输入的内容。这就是我要说的,通过技术进步弥补该计划的缺点。
它在双拼写中略好一些,因为引入零元音作为无声元音情况的占位符,从而在拼音级别实现无关紧要的歧义。但是由于双拼每次都是元音或押韵元音,如果我们仔细观察这个时候,当双拼在元音或元音的输入中没有歧义时,我们会发现它没有也不可能有。根据双拼音的划分,汉语拼音可分为23个元音和33个元音,而23+33>26*2。简单的数学计算可以说明,琴键不足以代表这么多押韵,即使加倍也不够,所以有些押韵势必挤在一起共享一把韵,出现了“两个女人侍奉一个丈夫”的情况。但是,双重拼写方案非常巧妙地解决了这个问题,因为不是任何元音和元音都可以组合成合法拼音,这可以用来确定用户在元音已知时输入哪个元音。但这也意味着元音的确定取决于已输入的元音。
在旧的冷输入法中,输入
本身是不言自明的,任何输入都可以清楚地知道这个输入是元音还是元音,哪个元音是元音,哪个元音是元音,而不依赖于已经输入的信息,也不依赖于尚未输入的信息。
歧义的属性非常重要,旧冷输入法几乎所有的显著特征都是基于它。
自然生长
万物万物有灵论,在生命之初,只有一粒种子和阳光雨水会自然生长。
对我来说,冷输入法就是这么小的生命,它后来的许多功能都不在我的原始设计中。就像写奇幻小说一样,小说的设定如何组合进化,作者在开始写作的时候可能还没有完全想过,但他只是觉得这个设定很酷,当剧情逐渐演变时,那些设定就会显露出其神奇的一面,这可能会让作者大吃一惊。
当我思考如何处理元音的拼音时,我发现由于隋汉输入法没有歧义,根本不需要任何不必要的操作,可以直接输入元音。于是我想,为什么其他拼音输入法那么依赖元音,就像在整个拼音中,元音可以省略,但元音不能省略,为什么元音的地位这么差?这主要是由于汉语拼音中存在无声元音。因为总缺少一些东西,所以必须省略,如果没有,可能会有也可能没有,那么很难说它是不存在还是省略。那么,如果我假设所有拼音都有元音呢?所以我想出了一个概念——一个虚拟元音,一个假设存在且永远不需要的元音。由于所有拼音都有元音,因此在打字时省略元音并不奇怪。
需要指出的是,隋汉输入法的虚元音与双拼输入法的零元音完全不同,零元音是“一无所有”,虚元音是“一无所有”。
虚拟元音不是
纯粹是为了炫耀技巧而提出入的拼音,更何况虚拟元音丰富了拼音输入的组合形式,而隋汉输入法的特征码机制可以更大程度地降低重码率,所以如果没有虚元音,音韵匹配机制就谈不上了。
如前所述,不是任何元音和元音都可以组合成合法拼音,例如拼音“gi”是无效的。那么如果发生这种情况,我该怎么办?它应该简单地作为用户输入错误忽略,还是应该接受输入但在候选字段中显示空格,以便用户知道他们输入不正确?在这一点上,我退后一步,想,为什么发生这种情况时这很重要,必须将其视为用户输入错误?也许这正是用户的意图?有没有可能他想输入第一个单词的元音和第二个单词的元音,但两者不匹配?所以我设计了一个声音匹配机制来帮助用户自动做到这一点。
此功能可用于减少键入次数,例如,我经常键入“f'er”以获得“相反”,尝试和尝试。而这一切都必须在引入假元音之后完成,因为第二个词省略了元音。
在添加声音匹配后,旧的冷输入法立即获得了另一个特性——输入无差错。
这种无误性表现在:
用户不能输入不正确的元音或元音;当用户输入不匹配的元音和押韵时,它将被拆分为两个拼音;省略元音也是正确的。
因此,输入法中没有正式的输入错误。
独特功能
除了上述功能外,冷输入法还具有许多独特的功能。这些功能有的依靠冷时代的特点,有的是解决一些场景存在的问题,有的解决了输入法使用中常见的痛点。
拼音替换
虽然输入法中不存在形式化的输入错误问题,但由于用户错误,输入不可避免地与其输入意图不匹配。针对这种情况,隋汉输入法提供了一个同样强大而简单的功能——拼音替换。
因为苏汉可以输入任何元音或元音在
单个操作中,其输入是模棱两可的,不依赖于其他现有信息,因此很容易在任何地方替换元音或元音。这对于全拼和双拼都很难做到,因为即使勉强完成,其操作也必然不可能简洁明了。在隋汉输入法中,如果要替换或插入元音或元音,操作只需:选择要操作的拼音,直接输入正确的元音或元音。这个操作太简单了,没有冗余的痕迹,自然而强大。
拦截优先
隋汉输入法具有手动造词功能,构词的方法是先输入短语的拼音,然后在屏幕上点击短语中的子短语,自动完成构词。根据用户反馈,在实际使用造词功能时存在这样一个问题:旧的冷输入法是按照签名码、等长匹配、超长匹配、不等长匹配的顺序显示候选单词,那么在要创建的短语中选择单词时会特别麻烦, 因为输入拼音越长,单词的候选位置越低。
为了解决这个问题,我增加了截距优先级功能,用户可以选择某个位置的拼音,命令输入法使用位置前的拼音作为优先级搜索条件。
短语回退
短语回退功能不依赖于旧冷输入法的任何特性,它是解决日常输入中的一个痛点,即在输入拼音完全正确的情况下,用户可能会握手选择错误的候选词,太尴尬了!我们需要删除已经筛选过的短语,然后我们必须再次重新输入拼音以选择正确的候选人。问题是,有必要这么麻烦吗?为什么不将删除已放在屏幕上的短语并再次输入拼音的工作留给输入法呢?
用户只需从 Enter 键向左滑动,所有内容都会返回到单击候选项之前的状态。虽然说“儿子无悔大夫”,但这个时候不要那么真实。
以上三个函数是我在老式冷输入法中选择的代表函数,毕竟这不是说明书,没有必要一一解释。其实隋汉输入法还有其他一些功能,比如为了方便选词而增加的笔画过滤功能,以及在用户的强烈要求下逐步探索后加入的滑动机制。这种滑动机制最初是单押韵条纹,即只能用一个字母押韵滑动,后来释放了这个限制。但是滑动机制并不完美——滑动机制只适合一些拼音的输入,而不是所有的拼音,这就是为什么我没有把它拿出来重点介绍的原因。
旧的冷输入法也有很多不足,比如界面不够漂亮,词库不够强大,智能句子功能不够强大(安卓版可用,iOS版不可用)等等。但我想说的是,这些都是技术上的不足,技术进步可以弥补方案的不足,而技术上的不足掩盖不了方案的光芒。有些技术问题确实是个人实力难以克服的,所以如果你认识马云、马化腾、雷军、罗永浩等朋友,请帮忙介绍推荐,提前谢谢。
如果想进一步了解旧冷输入法,可以查看旧冷输入法iOS版教程;如果要下载旧冷输入法,安卓用户请到宽的旧冷输入法页面,iPhone用户请到App Store搜索“老冷输入法”,这里需要说明的是安卓老冷输入法是免费的,iOS老冷输入法是付费的, 价格为3元。
写在最后
韩输入法对我来说并不像一个应用程序那么简单,他更像我的孩子。起初他还是个蹒跚学步的孩子,跌跌撞撞,但现在他可以微微站立,他想向所有人挥手,他想得到世界的目光。要问隋涵今年几岁?我想我大约6岁。