在之前介绍了双拼输入法之后,我其实没有停下折腾的心思。从小鹤换到自然码,又从自然码换回小鹤,同时也打起了形码的主意。这次实验中,我尝试了比较容易找到配置,也有相对较大的使用群体的形码输入法,并稳定在五笔输入法到现在,持续日用了一个月左右。

先说结论:我对形码输入法的评价依旧没有改变,比起作为长期的创作或日用输入方案,五笔更适合作为双拼这样音码方案的补偿,尤其在目前大部分人已经有熟练音码输入基础的情况下。但同样,形码输入法仍然有学习的价值,有些优势是音码输入注定不能替代的。

形码:是什么、为什么、如何做成输入法

形码输入法是一系列将汉字的部件作为码元进行输入的方案的统称,与拼音和注音输入法这样有国家通行标准、并已经形成通识的音码输入法相对,形码输入法更是民间开发的集中区。形码的开发更多体现了发明者个人对汉字的认识。和音码相比,形码输入可以让看到字的人即使无法认读这个汉字,也可以通过对汉字外观的观察完成输入,脱离了对读音标注体系的依赖。

这个开发过程需要的,是对汉字形成一套完整的分拆识别规则。那么最直白的分拆方式,就是我们在上学时都或多或少学过的「偏旁部首」。

首先,偏旁部首是有国家标准的,但它的标准并不能算是彻彻底底的「通识」。汉字作为表意文字,按国家语委的说法,合体字都可以分解出上下左右里外的零部件,称为偏旁,所以偏旁的数量其实可以很多;而部首就是个更小的概念,一些能组成字的部件组合,就是我们可以用来进行汉字查询的部首,而没有偏旁的独体字也可以分拆出笔画这个更加基本的单元,并以它们作为部首。对两万多个汉字进行归总与整理后,国家语委根据部首的发展、结构等等,确定了 201 个主部首和 100 个附形部首。所以好消息是,即使我们不单独开发形码输入法,直接用部首输入,我们的形码键盘也不会长成下面这个样子。

boxcnlUGm7LvCk1VyVgSrhhY0Mf
图源:KnowYourMeme

接下来需要解决的问题,就是怎么把这 201 个部首安排到键盘上了。但即使你真的这么做了,你也会立即发现自己根本没法输入,因为你对标准的部首表一无所知。

举个例子,杰、黑、叇、赣、长、既、炁,这七个字应当用于检索的主部首分别是什么?

boxcnTqE3KE3vXcUmjhHMY7wWTg

一定程度上,这解释了字典里为什么会出现难检字,我们在教学中为了方便,并没有详细解释偏旁与部首的差别,也没有解释偏旁不一定是部首,更没解释清取部首的规则。简单来说,完全以部首作为拆分的标准,说不定会带来更多的麻烦。

那既然有官方规范的部首不好用,有没有在电脑输入之前就已经成体系的识别检索系统,能给汉字编码,还能方便地安排给键盘用来输入呢?还真有。

举个例子,我祖父查字典时会采用一种相对古老的汉字编码方式,「四角号码」。这套编码体系需要对汉字四个角的结构进行识别,给予标记,根据规则生成四个数字编码。

那既然四角号码已经可以将汉字映射在数字按键上,为什么我们不直接使用数字小键盘输入汉字呢?我们不说具体的取码规则,看看下面两个字,尤其它们四个角的结构。

boxcn5TVNcusfRYLaCmJSJ9X0ze

这就涉及到了一个输入法才需要考虑的问题:重码。当一个形码输入法按照写成的规则分拆汉字后,发现有两个或更多汉字的编码相同,就是出现了重码——这其实是所有输入法都需要解决的问题,拼音这样的声码输入法尤甚。

而减少重码的方法很多。比如一,把编码的数目限制去除,让编码可以像拼音一样写完每一个零件,那自然比拼音的重码率低。这种模式的极端例子就是笔画输入法,按手机常用的数字编码,赢字的编码就是 41525135112534354 ——缺点也是显而易见,首先只能输入单字,因为无法用固定长度的方法来分隔两个字的输入码;其次编码太长,输入速度受限;再次,严重依赖笔顺/框架结构知识,如果顺序出错,查字就会失败。

二,是在重码多的基础方案上借助智能识别和用户词库。比如拼音输入法的主力从智能 ABC 到微软拼音,再到走入大批 XP 和 Windows 7 系统的搜狗拼音,整句输入、用户词库和智能判断词频成了音码输入法的主要方案。而对于形码来说,采用同样的方案显然不如拼音这种已经成为通识的输入策略好上手。

那么,要让形码输入法比音码输入法有一定优势,就需要三,也是大多形码输入法采用的方法,找到更好的规律统合与拆分汉字部件,尽可能把常用汉字的编码分开,人为减少可以独立成词的汉字的重码率。

各种主流形码输入法的体验

常见的形码输入法虽然都是以这样的形式归拢自己的字根,让它们尽可能分布有规律地分布在键盘上,但在底层的设计逻辑和易用性上,即使是目前仍然使用者众多的少数几种形码输入法,其间的差别也是相当之大。

我选取尝试的包括了简体中文地区常用的五笔 86、五笔 98、郑码,以及繁体中文地区常用的仓颉(以及速成)、大易、呒虾米、行列,各给了至少半天的时间学习基本规则和试打,一步步选出了我最终选定的五笔 98 输入法。我也根据直觉,对这些输入法主观评了分。

输入法字根易学程度键位易上手程度拆字取码容易度简/繁体字支持
仓颉输入法⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️
呒虾米输入法⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️
五笔 86⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️️
五笔 98⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️
郑码⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️
行列输入法⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️⭐️️⭐️️⭐️️
大易输入法⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️⭐️️

字根易学程度

字根是形码输入法拆字的基本单元。字根是否易学、易记,决定了一个形码输入法在使用者心中的第一印象。用我评分最高的两个输入法举例,行列输入法是用笔划做分组,从 A 到 ;的 10 排键对应十种笔划,把 QAZ 三行作为「上中下」,字根的首笔定排(比如木,第一笔是正交 4),末笔定行(0-4 是上,5 或无是中,6-9 是下,比如木的末笔是捺 8,木字就是 4 下,对应第四排下的 V 键)。

boxcnUqyA35e0yEsvHSpeT7RVKh

所以行列输入法几乎用不到专门背字根,如果你使用的是行列官方的输入法,它还会自动给字根的提示。

而呒虾米输入法使用的则是联想法,比如哈字,能拆成口和合,而合的上半部像 A,所以哈的编码就是 OAO。除了字形,它还采用了字音、字义等等联想,比如部字就是立 L(音)口 O(形)阝 B(形)。但字根较杂,有的联想也很离谱,比如隹形似佳,佳是 Very good 所以是 V,还有一些只能硬记,少一星。

键位易上手程度

除了字根设计的科学性,键位设计的合理可以让输入法的上手更快。行列和呒虾米的键位更易记,是因为它们自己有一套与按键交互的规则,要么是和字母直接建立联系,要么是无视键值去和位置建立联系。类似地,五笔输入法的一丨丿丶乛分区也是和位置建立联系,但为了平衡字根的分布,还有不少的特例需要专门记忆。

而堪称键位灾难的,在我心中非仓颉和郑码莫属。它们的字根排列的设计完全按照字母表顺序,自己有内部逻辑,但放到键盘上,意义接近的按键却隔了十万八千里。而郑码比仓颉低的那一星,是因为仓颉是繁体中文键盘的标配标识字根之一。

boxcneV09HwD5y5yoeICwqHoMod

至于同样键位看起来没什么规律的大易输入法,首先它是繁体中文键盘标准附带的字根之二,其次它按内涵进行的字根分组和官方给的记忆方法其实没什么关系,字根分组讲五行动物自然头头是道,一看记忆方法全是谐音梗。

boxcnqLecElnmfllwAX9HRjEkUh
看得我头疼

拆字取码容易度

拆字取码是否适合人们的日用频率,是否符合写字、认字的一般规则,都会影响拆字取码,尤其对初学期刚刚了解基本字根的使用者。比如我们相对比较熟悉的五笔 86,我个人感觉它难上手,是因为它为了兼容一些部分部件相通的字形,采用了很多本身是破碎的字形,比较典型的例子就是「母」字。

boxcnEUm3Q1cFafFOif3HsYnVPb

「母」在 86 版中为了兼容「毋」取了一个外框作为字根,可其实没多少人天天打毋和毐,却天天有人打繁海晦敏,而且这个先取横再取两点的取根方法也是和正确的笔顺相悖的。98 版的字根设计就更贴近一般的识记原则,并纠正了不少笔顺的错误,初学时拆起来也更容易猜对。

仓颉的拆字取码则是另一种方式的不直观。仓颉是把字元拆得太碎,认真地把字先拆成偏旁,再给每个偏旁取首码和二码。这样做其实挺科学的,重码率可以做到非常低,可从入门到日用的学习时间会比较长。所以现在更流行的是只取两码的速成仓颉,但速成又把重码率高的问题带了回来。郑码其实也有类似的问题,它的优缺点也和仓颉差不多,不同的是郑码先天有更好的简繁体兼容性,而且拆解跟随笔顺;仓颉则是以字形为准,比较不符合我对「写字」的理解。

简繁体支持

如果前面这些都能克服,最后这项就是一锤定音的了。这些形码输入法中,学究气最浓的郑码天生就是连异体字和罕见字都能直接通杀,别的大部分以繁体中文为基础,只有五笔是完全以简体中文为基础设计。在我的理解中,这可能和注音符号体系本身就需要和键位做一次对应有关。几种繁体输入法中除了大易都给简体中文做了适配,只是由于主要的服务对象还是繁体中文,当遇到简繁重码时,默认状态下这些输入法都优先展示繁体。此外,Windows 等系统自带的输入法也对使用这些输入法输入简体的支持不甚完好。

使用形码输入的感想

作为一个简体中文为主的输入者,在这些限制条件下,五笔似乎成了我最省事的选择——是的,从上面我的主观评价里就能看出它并非最优选,但每个需求它都能用一个不算太烂的方法实现。而在每天使用形码接近一个月后,我仍然不能大方地推荐其他人也尝试形码,因为在达成足够的速度之前,它的收益实在是太低了。

先来说说我感知到的优点。

四码上屏和选字减少

四码上屏或是五码上屏可以说是重码率低的输入法的特权,因为只有对输入码有限制,并且没有选字负担时,才可能抛弃空格和数字键。而且得益于简码的存在,输入一个字的击键次数其实不会有太大变化,如果算上输入词语带来的击键次数减少,整句的击键次数甚至会比双拼输入时更少,尤其是当句子中出现了不常用的字词时,不再需要来回翻找的感觉非常好,这还是在我的输入算不上流畅的前提下。

在一段时间的习惯之后,常用词我已经可以不需要额外思考字形就直接打出来了,速度也有所提升。而且错字也明显减少,毕竟五笔词的 typo 打出来,连猜都猜不出原本应该是啥,强行让我多了一次检查。

查字与搜索变得简单

另一个明显有优势的场景是搜索与认字。和自己写文章不同,查不认识的字时,脑子或眼睛里是一定有这个字的长相的,不依赖音码后,我查字终于不用再靠描述了。类似地,搜索查资料也是一样,关键词会直接在脑中有具象的词,这种时候照着把词打出来就好。繁体字也可以直接拆字输入,不用临时 Ctrl+Shift+F,也不用担心把罕用字的词频刷上来。

剩下的就都是大大小小的问题。

输入法支持不佳

我本来就是双拼的使用者。往前查几年,双拼在各大内置/主流第三方输入法中的适配都成问题,一方面是使用者人群本就不大,另一方面是方案太多,想适配内置也要看看是哪些方案用户更多,可能还要关注方案的版权问题。

形码输入法的支持则更加离谱。我自己选择的方案是五笔 98。我能接触到的设备中,只有 iOS 内置了五笔 86、98、新世纪三个版本的支持,Windows 原生支持的只有使用范围最广的五笔 86。Android 则要看厂商选择的输入法合作方,有的时候五笔支持会被去除,至于我最喜欢的 Gboard,则完全没有支持五笔输入法,我选用替代的是基于 Rime 的同文输入法,体验只能算是一般。Windows 这边,为了五笔 98,我使用 wubilex 五笔助手替换了原生的码表,又重新安装了 Rime 小狼毫配置方案。

原本我是希望自己可以在电脑上用五笔,手机继续双拼的,可是实际操作后,我就开始输混编码了,只能统一到五笔练习。

高度依赖码表与词库

所有的形码输入法,或者说所有的输入法,都是基于码表的输入方案。而形码这种基于汉字的方案即使支持了词语的输入,也只是作为单字输入的一种辅助。能输入的词取决于码表,而大部分的五笔输入法并没有自定义词的功能,只遵从那套之前写死的码表,或是直接导入写好的外部码表。至少在我目前的测试中,只有 Rime 能在输入中自动学习用户词。

还有一项,说不上好坏,但我觉得相当有意义。

提笔忘字的启示

其实输入速度上,经过三个星期的日常使用,五笔已经基本在日常使用上逐渐跟上了我的思考速度,需要为了提高速度而换回双拼的次数越来越少(,我的双拼输入也越发不熟练)。

真正能让我卡壳的,就是突然遇到不常用的词,或是突然发现怎么也拆不对字时,前者我需要重新过一篇把读音转化成汉字,在脑海中具象再拆出来的过程,后者则往往是我把字的笔顺搞错,或是干脆把同音字弄错了。如果不是强制自己用形码输入法,我恐怕还一直坚信自己能把所有字形一次写对,比如瓦的笔顺是最后写点,龍字的右半的笔顺是横、竖折折、横、竖弯钩、三横。

在我的理解中,如果不是像我一样对这些工具与方案本身就带有极大的兴趣,显然是没必要多学一种如今用起来已经不算方便的输入法的。如果学了,大概率也就是和我之前一样,会一个额外的输入方式,在网上遇到不认识的字查字典时有一个抬手就打的方法。若是论速度和便利程度,尤其是对需要大量创作文字的使用者,恐怕没几个输入法比得过带有动态词频和智能词库的现代音码输入法。

于我而言,形码输入法是一个很好的复习汉字的方式。一旦当我们把目光集中在单个的汉字上,就会发现自己之前对这些美丽的符号到底有多大的忽视。我还会继续使用五笔输入法,看看能不能让自己的输入速度逐渐赶上之前双拼的水平,至于未来可不可以继续坚持,就要看会不会有输入法能把五笔 98 的支持做得更好了。

关联阅读

> 少数派请你做地图:城市声音收藏夹火热征集中,期待你创作的城市之声 🎧

> 下载少数派 2.0 客户端 、关注少数派公众号,解锁全新阅读体验 📰

> 实用、好用的正版软件,少数派为你呈现 🚀