摘要:进入计算机信息时代,人类逐渐在计算机上进行文字的输入,不再停留在纸上。一些特殊的应用中,如某些工业控制以及军工领域的产品,不安装键盘,若采用触摸屏式输入方式会提升系统成本同时会增大系统结构复杂性,那么完成文字或者数字的输入就可以通过鼠标或者摸球进行辅助,来完成一些简单的类似触摸屏的功能,该文主要介绍了基于Windows系统,以一个自定义的鼠标输入法为例介绍输入法的实现。
关键词:IME;Windows
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2012)28-6708-03
自从有了文字,人类才开始真正进入文明时代,仓颉造字开创了我国文字的先河,是中华文明史的源头。当今市场上已经出现了很多的中文输入法,如今随着对输入法需求的日益多样,用户对输入法的联想功能、词库的丰富等都提出了一定要求。如今,用户对输入法已经提出了更高的个性化要求,他们希望使用能够完全为其“量身定制”的输入法产品,充分满足其细分需求。举例来说,工程、医药、艺术等特定领域的专业人员在使用输入法的过程中,经常不能找到自己想要的文字,因为一般输入法的词库并不能全面覆盖这些领域的专业词汇。
日益变化的细分需求作为产品创新的强大的推动力,推动着输入法产品在技术上持续不断的完善,并最终实现完全的智能化。IM、浏览器和输入法覆盖了绝大部分互联网用户,占据了互联网用户的时间,而把持着键盘互联网的输入法则是客户端王冠上的明珠。随着云计算时代的到来,出现了搜狗云输入法,相信在不远的未来,输入法作为一个重要的客户端,将在出现百家争鸣的时代发挥越来越重要的作用。
1 输入法的原理及组成
Windows系统下汉字输入法实际上是将输入的标准ascii字符串按照一定的编码规则转换为汉字或汉字串。系统的键盘事件由Windows的user.exe软件接收后,user.exe再将键盘事件传到输入法管理器(Input Method Manager,简称IME)中,管理器再将键盘事件传到输入法中,输入法根据用户编码字典,翻译键盘事件为对应的字符再反传给当前正运行的应用程序,从而完成汉字的输入。
一般输入法都由三个窗口组成: 状态窗口,编码输入窗口,选择窗口。
状态窗口(Status Windows)---显示当前的输入法状态;
编码输入窗口(Composition Windows)---显示当前击键情况;
选择窗口(Candidates Windows)---列出当前编码的全部字符(串),供用户选择或查询。
上述三个窗口由基本的用户接口(User Interface )函数管理着。IME程序共有19个出口函数组成,每一个函数都有特定的格式,他们担负着与Windows系统传递信息的作用,这些函数是共Windows系统调用的。
2 鼠标输入法的实现
对于鼠标输入来说,则只需要一个状态窗口即可(必要的话可以再提供一个选择窗口提供选择),而不需要编码输入窗口。
本输入法的完成必须需要一个状态窗口来作为操作界面来完成,本输入的功能用于数字和一些自定义字符的输入。通过图形制作软件绘出一个位图,界面如下图所示:
3 软件流程图
4 代码实现
输入法本质上是一个动态链接库,主要函数功能介绍如下:
DllMain 作为程序的入口 ,在这里只需要创建主窗口和状态窗口。
StatusWndProc 是状态窗口即本输入法的窗口回调函数,处理所有的消息,如鼠标点击等等。
ProcessFromBtnPos 是根据鼠标点击的位置后进行的核心处理,如果当前是数字键,则讲对应的数字返回,如果点击的汉字输入,则从定义的词典mouse.mb中获取对应的汉字。也可以创建内存映射文件加载在系统中,避免多次打开词典文件。
5 输入法安装
通过调win32 api ImmInstallIME 完成输入法的安装,同时设置输入法的注册表。完成后,如下图所示:
6 总结
本输入法是为了满足工业控制中的特殊需要所定制的,脱离触摸屏和键盘而独立使用,可以代替一些简单触摸屏的功能,大大简化整个系统的设计,降低了系统成本和复杂度,根据需要可以动态修改词典,在实际项目中得到了很好的应用。
参考文献:
[1] MSDN参考手册(Microsoft Developer Network)[Z].