主题:【原创】【囧斋随笔】关于输入法 -- 范含
周末偶尔上微软中文主页,发现“近期发布”中有两条:
1,微软拼音输入法2007词库创建安装工具包:微软推出的微软拼音输入法2007词库创建安装工具包(V1.0),将大大提高您中文输入和文档编辑的工作效率。
2,微软拼音输入法2007词库升级服务:微软拼音输入法 2007 词库升级服务提供了一个安装向导程序,您只需逐步按照安装向导的提示即可轻松完成整个安装过程。
日期是2008年三月份,看来微软拼音2007也要有所动作了?
下载,安装,发现:一个是命令行工具,允许用户建立词库并安装;另一个则是词库升级服务,据说提供了许多“网络流行”词汇。
竞争对手呢?
四月11日,搜狗拼音发布3.3的预览版。由于一直没有使用,不太清楚两个次版本升级都改变了哪些内容。不过看官方论坛中的痕迹,似乎3.2会不打招呼的删掉谷歌拼音?官方声明中也承认这是个“Bug”,看来并非谣言。自然是立刻打消了试用的念头。
软件做得不好还有弥补余地,但一次流氓行为就会彻底赶走用户,挽回的机会几乎没有。
另一方面,谷歌拼音还是几个月没动静。现在用的版本还是1.1.27.51,看来谷歌的朋友也不算勤快。
当然,咱老汉也很不勤快,也是很久没更新了。
上回书说到,万事俱备只欠波折号,正打算找个地方塞下呢。
比起美式英语键盘,日版多了一个符号,也多了一个键,自然空出来一个位置——大键盘数字0的上档位。咱就打算把下划线安排在这里,对于旧布局没有任何影响,皆大欢喜。
开始的时候不愿意兴师动众,并且琢磨着同样盼望“自定义键盘”的朋友肯定不少,试图尽量用最小改动的方式解决。最后的结果就是找到了Microsoft Keyboard Layout Creator,微软提供的免费(当然免责)工具。
无论微软提供的键盘驱动多丰富,总有照顾不到的地方,总有满足不了的用户。允许用户自力更生,正是开源运动发起的最初动机之一。(后面会提到Linux下对于键盘和输入法的处理)但微软肯定不会把这个部分彻底放手,于是就发布了这个“键盘布局生成器”。
大致看了一下搜索结果,几乎都是欧美那些“字母佬”们打补丁用,比如说加一个欧元符号之类。但国内用这个东西的也不少,多半是用来生成少数民族文字键盘布局。还有不少人拿来定义一些常用符号,比如Ctrl+Shift+数字键输入圆圈数字,并且还经常抱怨与输入法热键冲突【^^】。看这个架势,估计即便是普通国人对于频繁使用“字符映射表”也已经有想法了。这是好事,穷则变,变则通,通则久。
这个东西使用上倒是简单,可以新建一个布局,也可以装载既存布局后修改。然后定义每个键的符号,各种控制键状态也要考虑,最起码也要处理Shift状态,指定上档符号。然后编译……剩下的看帮助吧。
当时家里的中文机器用的还是美式布局的IBM工包KB-8820键盘,村里淘的。先在美式布局基础上改了几次,都没有问题;但是装载日语布局之后就不行了,编译死活不成功,总是说什么定义了两次或者没定义。哪怕根本不改,原封不动的直接编译也通不过。开始以为是系统代码页什么的冲突,就换了日语系统的笔记本上试验,仍然不行;后来以为笔记本用的是通过Fn键切换的特殊键盘,就又找了日语系统的台式机试验,还是不行。
当此时,才能深刻的领悟到即便是微软,免费/免责软件的质量也不敢恭维,估计在发布前顶多也就抓几个字母佬测试了几种西欧键盘就算齐活。这时候咱才开始注意这个“键盘布局生成器”软件本身,而不是以力争短期内上手完工为目标。可以说,一年多以来很罕见的从用户模式切换回程序员模式了。
除了前台那个界面之外,只剩下了一堆头文件,几个库,还有以“CL.exe”为首的几个微软编译用程序。这根本就是把生成键盘驱动必须的那些文件抽出来而已。早知道到头来还是要改键盘驱动,何必非得用这东西?反正手头VC和DDK都是现成的,咱自己干。
DDK里面可是有不少好东西,许多代码都是“产品质量”,也就是“Live”——机器上正在跑的某个驱动的源代码。键盘布局的源码有三种,共五个:最普通的美式英语(kbdus)、演示死键的法国法语(kbdfr)和德国德语(kbdgr)、以及日文101和106键盘。
又不是头一次搞,咱轻车熟路。
1, 把目录“106”复制一份,改名“fhn”。
2, 把见得到的“kbd106”都改成“kbdfhn”,包括文件名和文件内容。
3, 在资源文件里面,把描述改为“Japanese Keyboard Layout for fANhAN”,版权声明改作“1978-2007”“Copyright (c) fANhAN inside. All rights reserved.”。下面还包含了一个“common.ver”,里面一堆“microsoft”。有兴趣发布的就全改掉,要是仅仅自己用就算了吧。现在得到了一个唤作fanhan版的日语106布局,除了名字之外都一样。
4, 从开始菜单的构建环境快捷方式进入,在命令行窗口中切换至代码目录。先“make”,等刷屏结束,再“build”,等刷屏结束。
5, 搞定,相应配置的目录下有成品“kbdfhn.dll”。
虽然可能是废话,但还是想啰嗦两句:
首先,请选择操作系统相应的DDK版本,XP/2003/Vista可是各不相同。因为咱决定开工收拾键盘的时候,改名为WDK的Vista用DDK还是在RC版阶段。是否愿意使用各种预览版,是“技術”部门和“開発”部门的本质区别之一。
其次,DDK安装目录不能带空格,文件编码也必须保持为ANSI。由于处理多种编码的需要,咱用的文本工具诸如“EditPlus”等都把默认保存格式设定为UTF-8,并且还带BOM文件头。不注意的情况就会被编译器提醒。
输入法和键盘布局中绑定的是“kbdjpn.dll”,而这个写明为“stub”的库就是根据硬件信息决定采用101、106,或是其他布局。而安装Windows时选择键盘的那一步,就是用来写入这个硬件信息的。
接下来可以看源代码了,咱已经可以相信任何合理的修改都能编译通过且正常投入使用。并且,这个小任务哪怕是对于外行来说也很轻松。快速扫一遍代码就能发现,一个“aVkToWch4[]”的结构数组常量被一个排版良好的大表格赋值。其中第一行就是“0”,并且对应着“SHIFT”状态下,写着“WCH_NONE”——仿照周边把它改成单引号包围的下划线就好了嘛!
然后就简单了:make、build、复制dll到系统目录、改注册表谷歌拼音的布局文件为kbdfhn.dll、重新启动计算机。
打开记事本,按“Shift+0”,优美的下划线;切换至谷歌拼音,按“Shift+0”,久违的波折号——口可口可口可口黑口黑口黑!
完成任务之后,这才开始注意代码的其它部分以及其他代码——干活时是否容易被其他课题所勾引,也是“技術”部门和“開発”部门的本质区别之一。
本帖一共被 1 帖 引用 (帖内工具实现)
- 相关回复 上下关系8
🙂好像是个拍过A片的,拍的很唯美。FANHAN INSIDE 扬州小羊 字0 2008-04-21 19:22:19
🙂范含啊,是YY小说电子生涯的作者兼男猪脚,很精彩哦。 宏寺 字0 2008-04-21 07:14:41
🙂看起来非常像一个人 沫水若水 字0 2008-04-20 19:18:51
🙂【囧斋随笔】20080415,关于输入法(七)
🙂【囧斋随笔】20071201,关于输入法(六) 5 范含 字5736 2008-04-20 04:31:41
🙂【囧斋随笔】20071125,关于输入法(五) 5 范含 字7632 2008-04-20 04:31:00
🙂【囧斋随笔】20071124,关于输入法(四) 3 范含 字4306 2008-04-20 04:30:24
🙂【囧斋随笔】20071118,关于输入法(三) 3 范含 字4355 2008-04-20 04:29:39