万里之行始于足下,在真正的开发输入法之前需要了解输入法的相关概念。这里根据作用的层次不同将输入法的基本概念分为三类:
1.框架层概念(和系统交互)
2.UI层概念(和用户交互)
3.功能模块层概念(和输入引擎交互)
1 先介绍一下框架层的一些概念
在windows系统从win98到winxp再到后来的win7、win8、win10。Windows 提供了两套输入法框架:在 Windows XP及之前,是 IMM(Input Method Manager),即输入法引擎,基于纯函数 API;Windows XP 及以后,提供了新的输入法框架 TSF(Text Service Framework),是基于COM组件对象模型)的。目前现有的各个版本输入法大多采用输入法管理器―输入法生成器(IMM-IME)框架进行开发,然而在 Windows 8系统之后的 Metro 风格的应用是不支持该框架的,在这些应用下进行输入,需要使用文本服务框架(TSF)开发的输入法。[1] IME(Input Method Editor)指代的就是输入法本身。
依据windows系统的演进,可以将输入法分为win8系统之前的输入法和win8系统之后的输入,由于win8系统出现了Metro界面导致老的输入法框架不能兼容,所以输入法框架不得不采用新的输入法框架,自此也产生了输入法开发的分水岭。很多人可能对Metro界面不太熟悉,这里以win10的Metro界面进行说明一下。
win10系统中全局检索的这个窗口就是Metro风格的应用,这种应用和传统windows桌面应用不同,在响应输入焦点时需要进行额外的处理,并且只能通过TSF框架获得输入焦点。
2 UI层
如上图所示,输入法界面通常由三部分组成:
用于显示用户输入字符组合的组合编辑框
用户显示候选词的候选窗口
用于显示功能模块的输入状态条
并不是所有的输入法都有这三个窗口,就比如微软自带的输入法就只有候选窗口。
语言栏是系统显示输入法列表的模块,主要用来查看系统当前加载了哪些输入法。
3.输入功能模块层
输入法模块中最核心的是词库管理模块,词库管理模块主要负责通过解析用户输入的拼音组合查询词库获得对应的候选词。
自定义短语模块主要是用户通过添加字符和对应的短语映射,实现自定义内容的快捷输入。
智能组词是指通过提前训练好的数据模型,在用户输入的时候快捷的查找到词与词之间的最佳匹配关系。
输入模式是一个更高层次的概念,常用的输入模式有:全拼输入、双拼输入、五笔输入、手写输入、语音输入等等。细化的输入模式还有拆分输入、笔画输入等等,这里就不一一列举了。