基于Qt/E的嵌入式Linux中文输入法的设计与实现
图3软键盘界面
软键盘左上角的CheckBox用于中英文切换,选中时,输人中文,不选时输入的则是英文,在英文输入时,若按下Caps键软键盘面板上的数字键,切换成常用符号,英文全变成大写。1-r按键是本输入法的特色,按下1-r键可以选择需要输出汉字的字体和大小,其余的按键功能同Pc机键盘。
因为没有桌面管理程序,本文还设计了一个置顶的浮动框,用于打开软键盘。当点击输入法按键时,弹出软键盘。
Qt/E输入法基类为QWSInputMethod,在这个基类中定义了一些接口用以支持输入法程序设计,并从QWSInputMethod这个类继承出一个输入法类,在这个类中处理键盘和鼠标事件,把接收到的键盘事件按照输入法的编码规则转换为对应的中文,一个汉字,或者是一个中文短语,并把最终用户的选择发送到当前编辑窗口。
1nputMethod类继承QWSInputMethod类来实现输入法的处理,在这里实现的几个主要的接口函数有:
virtualboolfilter(intunicode,intkeycode,intmodifiers,bootisPress,boolautoRepeat)
这个接口的作用就是过滤键盘事件,在这个函数中处理键盘输人,并且根据相应的输人法方法把键盘输入转换为相应的中文。
voidsendc0mmitstring(constQStringeommitString,intrepIaceFromPosion:0,intreplaceLength=0)
这个接口函数表示把相应的字符串发送到当前编辑窗口,一般用于在用户作出最终的选择之后,把相应的字符串发送出去。
voidsel1dPreeditsng(constQStringpreeditString,inteursorPosition,intselectionLength=0)
把当前正在编辑的字符串发送给当前编辑窗口。
为了使输入法成为系统级输入法,在这个类中还需要实现输入法安装/卸载函数,这样系统中才会有全局的输人法模块,输入法才能工作。
install和release输入法的函数,就是通过调用QWSServer类中的成员函数来实现的。QWSServer::
setCurrentInputMethod这个函数为当前的Qt/E安装一个输入法,如设置拼音输入法:
QWSServer::setcurrentInputMeth0d(pinyin)
如果把参数设置为NULL,就是卸载输入法。输入法安装完成之后,输入法类中就可以接收到键盘事件了,拼音输入法的具体流程见图4。
图4拼音输入法按键处理流程
最终拼音输入法在三星S3C2440平台上运行的界面见图5。
图5运行结果
3结语
本文基于三星S3C2440平台,实现了基于Qt/E4。5的拼音输入法,并重点阐述了Qt/E的中文输入法原理,在这个基础上可以比较容易地开发出其他的中文输入法。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)linux相关文章:linux教程
评论