五月天的 “突然好想你” MV 中的有两段对着屏幕录的输入中文的过程,看起来输入很方便,由此,我对台湾的输入法产生了兴趣。
由于天之痕而喜欢上轩辕剑系列的我,在云之遥上市之后,看着台湾玩家慢慢地通关,和他们聊起了输入法,被告知无虾米输入法目 前是超过新仓颉,最流行,最好学,最快的输入法,连幼儿园小朋友都在学。
难以想象把注音、字形、英文单词混合编码的输入法是什么样子,但无虾米输入法就是这样的输入法,它还是拥有 Windows 98 时代的灰色界面,并收费的繁体世界最流行的输入法。我尝试练习一段时间之后,聚精会神地输入最基本的字根的速度只有双拼的四分之一,又由于繁体字和简体字 有很大区别,注音和拼音也有区别,决定放弃无虾米。
拼音类的输入法的通病,重码很多,一不留神就会输入错字。我想去尝试一些其他的形码输入法。简体的形码输入,比较流行的就是五笔和郑码,虽然似乎五 笔的名气大一些,但是郑码看起来更加好,我决定在寒假期间学会它。
世事万变,突然有一天,我收到一用户的邮件,其中提到了对 ibus-sogoupycc 的建议,还指出了几处错误。本来觉得用 Linux 的人就很少了,用双拼的人就更少了,同时使用 Linux、双拼,还要是 ibus 的用户也许就只有十几个。但是那封邮件让我觉得世界上这样的用户多了起来,这个几个月没有变化的项目是时候去动一下了。我重新考虑了形码输入法是不是值得 去学,认为不用选词、两个键一个字、不用按空格确认的双拼肯定比形码快不少。至于云服务器识别错误的汉字,我想到了微软拼音的“纠正”功能,一种不会打扰正常输入而提供纠正错字的办法。于是我决定在寒假期间实现这些想法,并放弃学习形码输入法。
说到微软拼音,我一直觉得它是输入法界最有技术含量、最规范的。它规范到了不愿意接受网络词汇(2010版本之前),就让其它的拼音输入法有了可乘 之机。微软拼音的整句输入感觉很舒服,输入完拼音之后,不用多余的空格确认,可以按一个标点,表示确认输入并加上这个标点。写 ibus-sogoupycc 的时候我参照了微软拼音的一些行为,比如:选中文字后,可以将文字转换回会拼音,再开始选词,用于纠正错字;使用双拼的时候,屏幕显示的是全拼的提示。
主流拼音输入法需要用数字键选词,而数字键按起来不方便,这就有了用空格, Ctrl,Alt 等键来选词的特殊需求。那么如果用 asdfjkl 来选词,不就会更好吗? ibus-sogoupycc 默认就是这样,为了区分需选词按键和拼音按键,输入完拼音后需要按下 Tab 键,才开始选词,用 h 和 g 键翻页。
没想到,真正开始写程序之后,很快就进入了令人寝食难安的调试周。程序似乎在各个地方都能出错,在我的代码外。使用了各种正道歪道,无济于事。多线 程程序,你也许是有体会的。几天后实在找不到原因,就在 ibus-devel 讨论组提问,感谢 P.Huang ,我知道了像 glib 和 dubs 这样的东西并不愿意知道目前运行的程序是多线程的,你需要调用它们的函数通知一下才可以。相比之下 glibc 就很听话,使用 `-pthread` 编译参数就可以使得大量的 glibc 调用变成可重入的版本。
让我好几天辗转反复的问题居然就这样添加两个函数调用解决了,虽不甘心,但确实可以继续做下去了。寒假最后的两天,原来以为会比较难做的通过外部词 库选词,实际上比较容易就完成了。2月27日,我在项目的 Download 页放上了 0.1.0 的版本以及 Archlinux 用的安装包,更新了许多 wiki 页。但是随后我自己就发现了几个问题,不乏有低级错误。2月28日,我的一个好朋友过生日的这一天,我修正了我自己发现的那些问题,并通过测试,确保没有 问题。把版本更新到了 0.1.1 ,更新了 wiki 页。至此,我觉得是比较好了。
以前,用 Windows 的时候总是感觉到输入法比 Linux 好太多了,现在感觉倒过来了 

