TSF 输入法与亮堂的生活小记

先截取(bending)一下当前的桌面,

咳嗽依旧是咳得有些厉害,但应该也到了这个周期的末期,而且深圳这个气候,应该不致有延期的风险。

输入法这个东西,我真正捡起来其实就是在这一周,更严格一点,是国庆假日回来。国庆的时候,我一直在研究 dwmapi,真正可以使窗口完全透明,完全可绘制。透明窗口,就是借助这个来实现,而所谓的异形窗口,也是可以借助这个来实现,虽然不是非常纯粹的异形窗口,但是效果比微软老旧的 api 所支持的那种裁剪的异形窗口要好很多倍,以及,现在微软自己的输入法,也就是 windows 系统目前自带的微软输入法,细心的同志可以观察到,它其实是一个异形窗口,因为从某种程度上来看,它实在是太精致了,过去的 windows api 无论如何也是达不到这种层次的,而想要实现这种效果,非 directx 家族的绘制 api 不可,至于 gdi 和 gdip 这两个旧时代的宰相,无疑是该告老还乡了。

还有谁像我这般对输入法的研究有着如此的热情呢?我可以对别人说,我研究这个是为了名声,为了钱,那不过是为了安他们的心,让他们觉得,从世俗意义上来讲,我是可以满足他们的期望的,我是可以成功的。深深地审视我自己的内心,我们远东地区难道就不能有一款开源的极致的输入法,什么汉语、吴语、粤语、藏语、蒙语、全拼、双拼、粤拼、新注音、五笔、仓颉、呒虾米、日语、汉语、越南语、泰语、韩语,不过是按键的映射与响应的问题,有那么复杂吗?

有人说,开发输入法其实一直在和妥协进行搏斗。从我的经验来看,确实是这样的。各式各样的妥协,层出不穷,现有的微软的目前已公开的材料寥寥无几,有很多文档甚至年久失修,github 上面开源的项目甚至不用分页就可以在一个页面排布完。在这种情况下,我原本在做我的本科毕业设计时,这里多说一点背景,我目前的学习当然是本科,以及,我本科毕业设计选择的题目是 Windows 平台下的中文输入法的开发与优化,当时的副院长在开题的时候说,你这个题目,30 年前研究研究差不多,现在都是什么年代了,都是云输入法,你还去搞这个本地,你和人家搜狗比有什么优势?我那时还处于技术调研的阶段,心中的底气实在不足,然而,我也并不会就此认可他的观点,虽然我不会说陈胜那样什么燕雀安知鸿鹄之志的浑话,我能反驳的,却是早已立下了根基,不容动摇。搜狗的输入法我不比你要更清晰,王小川他什么德行?一个输入法,扯什么不要小瞧,是获取用户信息的窗口,究竟窃尽了多少用户的隐私?一个 dll 文件,最多两个,就能解决的问题,你后台给我开了多少个 exe 偷偷跑?再去扯什么云输入,那,敢不敢把云输入的接口和数据给公开出来,这时候,又要扯商业隐私了是吗?其他商业驱动的输入法多是蛇鼠一窝,不议也罢。输入法和汉字是紧密相连的,汉字在我们心中是什么地位,汉字在我们东亚是什么地位?堂堂汉字,这是多么神圣的一种符号,岂容你们这些肮脏的东西来亵渎?一群混账东西,为了钱就能够无所不用其极,祖宗之法,圣人之训,都成了什么了?但是呢,读者千万不要误会,我对副院长是没有偏见的,我现在越回想,就越觉得,副院长的评价,以及他平时的作为,实在也是一碗水堪堪不洒出碗口平面。学院若说真能有可以担得起沉稳这二字的,却是非其莫属了。在其位而谋其政。那时,我该反驳的,当然还是反驳了,以现在的角度看来,我依旧觉得该作同样的反驳。现在有了基于 windows hook 开发的输入法的成品在手,有编译运行成功的 TSF 输入法在手,底气自然是大大地增加了。我也依然认为,道理和底气有时候关联并不是很大。对就是对。我的角度的对,就是我的角度的对。

扯远了。我又重新回到输入法的研究,是我在着手开发一个基于 Windows hook 的键盘可视化工具。在国庆期间,打球之余,在家里面把绘图的相关内容给研究得差不多了,就想着该启动开发进程了。哪知,windows hook 忘掉了,只好回去咀嚼我的那个基于 windows hook 的中文输入法,使用最新的桌面绘制技术,把原来的界面改造了一下,

改造前

改造后

改造后

改造之后,又被勾回曾经的那个无法解决的 caret 的问题。于是乎,又想到之前搜寻的开源的项目,PIME,微软的 TSF Demo,小狼毫,Dime,还有一些韩语输入法,还有一些日文的项目,甚至又看了一下 pcman 的博客,当然啦,没有重看它在香港的开源集会上的视频。

也想起之前找的一些稀稀落落的博客,以及,终于搞清 TSF 捕捉 caret 的方法。但是,仍然不会用。上面的项目也几乎都无法让我这个现在已经习惯 neovide 和 clangd 和 cmake 进行开发 side project 的用户正常地运转起来,于是乎,再抽时间看,本来说好要好好更新我的那个基于 hook 的输入法的,也确确实实就搁置了,虽说,剩下的问题基本就是一些体力性的劳动和一些小灵感的触发。加上最近喜欢上了录制视频分享我的学习所得,我的 study in public level 更进一层,于是,去探索 TSF 的欲望愈加强烈,此消彼长,起起伏伏之下,终于与今日(昨日)下班前的两分钟,解决掉了这个问题,基于 TSF 的输入法,这个我亲自编译和注册的输入法,终于运行成功。看似是一小步,其实可能已经奠定了我接下来两年的开发的基调。

所以,我们不妨吹一吹牛,总有一天会实现的,不是吗,尤其是对于我们这种乐高(coding)人士来说。

世界焕然变色,刷上的新色调,当然是亮堂的色调。

与 Lr 同游世界之窗旁边的 The Happy Valley,后面还去 Apple Store 逛了一圈,她充电,我也给我的 Apple 知识储备充充电,毕竟,终有一天,我也会为 MacOS 定制一款输入法的,不是吗?

最后再小小的提一点,苹果的信徒或是 Linux 的信徒或者 Windows 的信徒,如果死死地信守一个信仰,其人可悲可笑可怜之至极矣。有很多其他的情形也是类似。相比,一些多愁善感之人见到此番,必要"撒"上几滴叹怜的惺惺泪吧。

生活总是亮堂的,不是吗?