缘起
自从学习计算机起,熟练了各种输入法:从全拼到双拼到二笔到郑码,最后停㽞在了郑码单字输入上。因为:
- 一者因为长久在国外,用拼音易提笔忘字,故用形码。
- 二者若要拼音输入流畅全靠智能推测,Linux 下的拼音不好用。
- 三者拼音依赖词组上下文,若为打字方便限制在常用词组,做不到“言必己出”。 故必须容易做到单字输入。
- 四者,为防止智能拼音开发厂商上传我的打字数据。
- 再者,郑码不影响使用 qwertz 键盘,也用不到符号键。完全兼容得语键盘。
网上能下载到的郑码输入法有如下缺点:
- 不能关闭词组和联想功能。不适合单字。
- 不能完全手动上屏,每个字的体验不一致。自动上屏在大字集下彻底无用, 破坏了手感的统一性。 并且必需盯着屏幕看是否有敲空格的必要。
- 所谓的支持“大字集”,也仅是 ucs2 范围。
- 一些在经典 winimm 框架上做出来的输入法, 由于母体程序缺乏维护, 与当前流行的软件(如 chrome)缺少兼容。
- 已知的外挂的输入法不兼容 stardict, vim 等程序。却又联系不上作者, 软件也未公开源码,无法改进。
- 许多输入法响应慢,因我平日仅使用 800MHz 的 CPU。
只有自己写一个才能符合我的需求。 为了在学校机房使用,必需做成外挂式的。 像南极星那样。
实现
输入法本身用纯 C + Win32API 实现。也就是个键盘钩子。送字用的是 WM_CHAR (如果系统支持),WM_PASTE,或者粘贴用的快捷键。其中,对于命令行窗口内容的输入做了特殊处理。
码表是一个专门设计的数据结构。在代码的注释中有说明。
生成码表用的是一个 Haskell 脚本。没有第三方依赖。Haskell 已代替了 Perl 成为了我的首选高级语言。
特性
- 完全支持 qwertz 键盘
- 可制定码表, 适合许多输入法
- 提示编码
- 支持 Unicode 中文
- 全手动上屏
- 响应快
- 免安裝, 不用 admin 权限
- 小巧,二进制程序除码表仅 6KB
- 在程序里做进了对 vim 和 gdkWindow 等窗口识别, 自动调整送字方式
源码
程序写于 2019 年,这一年里几乎每天都在使用,其间修正了几处内存导至的
Crash。然而由于存储在本地笔记本上的 SVN Repo 误删遭损坏,最后俢正了 Bug
的源码已遗失,仅有俢正 Bug 后的二进制文件存于网盘。
在此仅提供某一版本的源码下载。
下载链接: imext.zip
Edit 2011-10-15: 更新了 hook 模块的代码。