本发明涉及一种嵌入式输入法领域,具体为一种轻量型嵌入式输入法。
背景技术:
输入法是将各种文字符号输入到计算机或者其它设备而使用的编码方法。输入法分成汉字编码、英文字母、数字编码等输入法。
目前,很多嵌入式输入法依赖平台性强,调用系统的库文件多,不易于移植到其它硬件平台。传统输入法占用内存大,嵌入式系统的资源都是相对有限的,在一个运行着的多线程嵌入式系统中,通常往往还运行着一些系统级的程序和其他应用程序,所以要求输入法尽量占用内存少,系统开销小,这样的多线程嵌入式系统才会有更好的用户体验。响应速度也是衡量一款输入法的标准,如果用户点击一个按键,几秒才检索出词条,这样的效率势必严重影响系统的运行。
在当今计算机和手机普及的时代,一款轻巧的、反应速度快的,可移植的智能输入法显得尤为重要。
技术实现要素:
本发明的目的在于克服现有技术的不足,发明一款轻巧的、反应速度快、可移植的智能输入法。
本发明解决其技术问题所采用的技术方案是:提供一种轻量型的嵌入式输入法,所述输入法包括步骤:
s1、输入法创建和初始化,显示软键盘;
s2、根据需要选择相应的输入法,可选择的输入法包括中文拼音输入法、英文输入法、符号输入法以及手写输入法,若选择手写输入法,步骤跳转至s6;
s3、通过软件盘选取英文字母或符号,或通过硬键盘输入英文字母或符号,若输入法为中文拼音输入法,步骤跳转至s5;
s4、输出用户选取或输入的英文字母或符号,步骤跳转至步骤s9;
s5、若输入法为中文拼音输入法,显示用户选取或输入的内容,对输入法数据包采用二级检索方式,在二级索引以后的词条,采用二分法算法快速查找输入字符对应的备选词条,步骤跳转至s7;
s6、程序开启定时器定时扫描手写区域的手写轨迹,在手写区域内显示所述轨迹,手写区域的手写轨迹对应的坐标值储存在数组中,用户完成手写操作后,轨迹数组作为入参传给笔迹识别函数来处理,识别函数执行完成以后,返回出一组备选的词条;
s7、用户根据显示的备选词条进行选择;
s8、输出用户所选中的词条;
s9、完成一次输入。
进一步地,还包括步骤s10、判断是否退出输入法,若是,则释放输入法资源,释放输入法开辟的内存空间;若否,则等待下一次输入。
进一步地,所述输入法采用面向对象思想创建。
进一步地,所述的嵌入式输入法采用标准的c语言编写。
进一步地,所述步骤s6中,所述定时器在手写笔处于抬起状态后开启,在定时器中断触发到来时,手写笔没有再次被压下,可断定用户已经完成手写操作。
进一步地,所述软键盘处于拼音输入法状态时包含4个位于左边第一列的用于切换中文拼音输入、英文输入、符号输入、手写输入的按键,位于中间区域的用于拼写汉字和输入英文字符的26个英文字母按键,以及位于右边的常用的标点符号和常用的功能按键;所述软键盘处于手写输入法状态时,4个用于切换中文拼音输入、英文输入、符号输入、手写输入的按键位于左边第一列,第二列为中文、数字、小写字母、大写字母的类型选择按键,第三列是文字备选区,第四列是手写区域,右边有符号输入法和常用的功能按键。
进一步地,所述输入法处于中文拼音输入法状态通过硬键盘输入时,响应ok键将备选词条的第一项输出。
进一步地,所述软键盘,用户选取或输入的内容和备选词条在触摸屏上显示。
与现有技术相比,本发明的有益效果是:反应速度快,可移植性高,容易移植不同的嵌入式平台,占用系统内存少,能有效减轻内存容量紧张的压力。
附图说明
图1为本发明的流程示意图;
图2为本发明所使用的拼音输入法背景图;
图3为本发明所使用的手写输入法背景图。
具体实施方式
为了便于本领域技术人员的理解,以下结合附图和具体实施例对本发明作进一步详细描述。
一种轻量型的嵌入式输入法,所述输入法的创建采用面向对象思想,把输入法当作一个控件,只有动态创建出一个输入法控件,使用其控件句柄,才能对输入法进行操作,使用完毕后,可通过控件的释放函数,把输入法控件所占的内存空间释放掉,减轻内存容量紧张的压力。所述输入法采用标准的c语言编写,不寄于任何硬件平台,具有很好的可移植性,特别适合嵌入式系统中使用。
如附图1所示流程图,所述输入法包括步骤:
s1、输入法创建和初始化,显示软键盘;
s2、根据需要选择相应的输入法,可选择的输入法包括中文拼音输入法、英文输入法、符号输入法以及手写输入法,若选择手写输入法,步骤跳转至s6;
s3、通过软件盘选取英文字母或符号,或通过硬键盘输入英文字母或符号,若输入法为中文拼音输入法,步骤跳转至s5;
s4、输出用户选取或输入的英文字母或符号,步骤跳转至步骤s9;
s5、若输入法为中文拼音输入法,显示用户选取或输入的内容,对输入法数据包采用二级检索方式,在二级索引以后的词条,采用二分法算法快速查找输入字符对应的备选词条,步骤跳转至s7;
s6、程序开启定时器定时扫描手写区域的手写轨迹,在手写区域内显示所述轨迹,手写区域的手写轨迹对应的坐标值储存在数组中,用户完成手写操作后,轨迹数组作为入参传给笔迹识别函数来处理,识别函数执行完成以后,返回出一组备选的词条;
s7、用户根据显示的备选词条进行选择;
s8、输出用户所选中的词条;
s9、完成一次输入;
s10、判断是否退出输入法,若是,则释放输入法资源,释放输入法开辟的内存空间;若否,则等待下一次输入。
其中,所述输入法的创建和初始化具体为声明pime输入法的结构体指针,并为它开辟内存,初始化内存后,返回该指针。初始化函数时执行以下操作:
(1)判断输入法的区域rect是否合法,是否越界,是则返回false,否则进入下一步。
(2)资源读取,获取输入法的键盘图片,设置属性等。
其中,所述输入法响应并处理的是硬键盘,软键盘,及定时器事件,具体响应和处理的操作如下:
硬键盘:所述输入法处于中文拼音输入法状态通过硬键盘输入时,响应ok键将备选词条的第一项输出。如用户在拼音输入法中,输入了“ya”,备选词条有“1呀2压3牙4押5芽”,再按ok键,应将“呀”输出到屏幕上。
触摸屏:对触摸屏事件进行区域比对,看是点击到哪个软键盘按键,然后根据不同的按键,处理相应操作。如拼音输入法中,输入了“a”,程序将从输入法数据中,搜索出以“a”开头的数据“阿啊呵吖嗄”,显示在备选词条区,供用户选择。
定时器:在手写笔处于抬起状态后开启,在定时器中断触发到来时,手写笔没有再次被压下,可断定用户已经完成手写操作。
其中,所述软键盘,用户选取或输入的内容和备选词条在触摸屏上显示。软键盘显示的函数的部分代码:ctl_showimebgpic(pime);备选词条显示的函数的部分代码:ctl_showimeword(pime);输入的内容显示的函数的部分代码:ctl_showimeinput(pime)。
其中,输入法退出时,判断背景拷贝pcopyscr指向的内存空间是否不为空,如果不为空,释放pcopyscr指向的内存,释放输入法资源,最后释放输入法开辟的内存空间,减轻内存容量紧张的压力。
实施例1
输入法为中文拼音输入法时,软键盘的界面如附图2所示,包含4个位于左边第一列的用于切换中文拼音输入、英文输入、符号输入、手写输入的按键,位于中间区域的用于拼写汉字和输入英文字符的26个英文字母按键,以及位于右边的常用的标点符号和常用的功能按键,如叉号是关闭软键盘,前删除、后删除,和回车键。
拼音输入法需要输入法数据包,输入法的文字信息都从数据包中读取,拼音数据包里包含有每个拼音对应的文字及词组的编码,从里面读取出要输出的文字编码,就能在屏幕上显示,数据包格式:一级索引(27*4字节)+二级索引(n*4字节)+词条1+词条2+...+词条n。
本输入法数据格式采用二级索引查找,第一级索引保存26个字母的首偏移地址,如字符“a”指向索引的“a”地址,字符“b”指向索引的“ba”地址;第二级索引指向的是每个同一拼音数据的地址首地址,如索引的“a”指向词条“a阿啊呵吖嗄腌锕錒”数据的地址,索引的“b”指向词条“ba吧把八爸拔罢跋巴芭”数据的地址,这样的格式就可以快速查找到拼音词条。
用户输入“baa”,程序读出词条按以下步骤:
(1)通过第一级索引找到“b”和“c”的位置,读出它的值,假如“a”的值是x0aa,“b”的值是0xbb,也就是需要查找的范围在0xaa~0xbb之间。
(2)为了快速检索出“baa”的词条内容,程序采用了二分法查找算法,程序见如下:
(3)程序的flag变量为真时,已经成功找到了用户输入串的词条内容,从mid+1文件位置读取词条末尾位置,根据mid的值从数据文件中读出词条内容“baa白皑皑”。而每个词条的数据格式是:拼音+空格(0x020)+文字1+空格(0x20)+。。+文字n+换行符(0x0d,0x0a)
(4)根据词条的数据格式,将文字1、文字2存入数组中。
实施例2
输入法为手写输入法时,软键盘的界面如附图3所示,4个用于切换中文拼音输入、英文输入、符号输入、手写输入的按键位于左边第一列;第二列为中文、数字、小写字母、大写字母的类型选择按键;第三列是文字备选区,在手写完一个汉字后,备选区都会有若干个形似的汉字,提供用户备选,更能容错;第四列是手写区域,供用户手写,并及时显示手写轨迹;最右边有符号输入法和常用的功能按键,如删除、空格、回车。
手写输入法的实现步骤为:
(1)将用户手写轨迹存入一个数组里;
(2)轨迹数组每增加一个下标,都需要将轨迹显示出来,就是将当前下标的坐标值,与上一个下标的坐标值之间连成直线;
(3)当触摸笔为抬起状态后,开启定时器,在定时器中断到来时,触摸笔没有再次压下,就确定为用户已经手写完成;
(4)将轨迹数组传入笔迹识别函数进行处理,函数执行完成后,返回一组备选词条。
定义输入法结构体如下:
本发明的工作原理及使用流程:用户使用输入法时,输入法开辟内存空间并初始化,显示软键盘。若用户选择手写输入法,用户手写的轨迹将存入一个数组里,所述轨迹在手写区域内显示,轨迹数组每增加一个下标,都需要将轨迹显示出来,就是将当前下标的坐标值,与上一个下标的坐标值之间连成直线,当触摸笔为抬起状态后,开启定时器,在定时器中断到来时,触摸笔没有再次压下,就确定为用户已经手写完成,将轨迹数组传入笔迹识别函数进行处理,函数执行完成后,返回一组备选词条;若用户选择拼音输入法,用户通过软键盘选取或通过硬键盘输入的内容显示在触摸屏上,对用户输入的字符采用二级检索方式,快速定位二级索引词条首地址,在二级索引以后的词条,采用二分法算法快速查找与输入字符对应的备选词条。手写轨迹或通过软键盘选取或通过硬键盘输入的内容经处理后返回的备选词条将显示在触摸屏上,用户从备选词条中选择自己需要的词条,完成一次输入。若选择的是符号输入法或英文输入法,则用户通过软键盘选取或通过硬键盘输入的内容输出到触摸屏上。此时用户可切换输入法继续输入,也可以直接使用当前输入法继续输入,若用户输入结束,输入法的资源将会被释放,而后释放输入法开辟的内存空间。
上述实施例为本发明的较佳的实现方式,并非是对本发明的限定,在不脱离本发明的发明构思的前提下,任何显而易见的替换均在本发明的保护范围之内。