基于Murphypinyin的嵌入式键盘设计_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于murphypinyin的嵌入式键盘设计qtembedded是 trolltech公司针对采纳嵌人式linux的设备开发的综合应用平台。qtembedded包含完整的应用层、灵便的用户界面、窗口操作系统、应用程序以及开发框架。qtembedded本身提供了对按键的支持,它在文件qkeyboard_qwscpp中提供了一个 qwskeyboardhandler类来处理按键大事。本系统创建了qwskeyboardhandler类的一个子类 qwskeymatrixhandler。在qwskeymatrixhandler类的构造函数中,通过open()函数打开矩阵键盘 key_matrix,通过

2、对打开的键盘设备创建一个qscoketnotifer来监控按键设备,通过信号与槽机制,建立该 qscoketnotifer与读键盘函数readkeyboarddata()的衔接,当key_matrix被激活时,就会触发读键盘函数 readkeyboarddata()。代码如下:notifier=new qsocketnotifier(key_matrix,qsock-etnotifier:read,this);connect(notifier,signal(activated(int),this,slot(readkeyboarddata();在读键盘函数readkeyboarddata()中

3、,调用矩阵键盘驱动程序的读函数read()来猎取按键值。为了使得按键值能够传送给应用程序,要用法 qwskeyboardhandler类的成员函数processkeyevent(int unicode,int keycode,int modifiers,bool ispress,bool autorepeat),各参数功能如下:unicode:按键的 unicode编码,如数字1的unicode编码为1,字母a的unicode编码为a。假如该项为0,则为功能键shift、left、right 等;假如该项为0xffff,则只传送键值keycode,不打印编码。keycode:qt中用法的按键名

4、称,如 qt:key_backspace、qt:key_enter等。modifiers:qt所支持的键盘组合键。ispress:推断按键的状态是“按下”还是“弹起”。autorepeat:推断本次大事是有自动重复机制产生,还是由一个现实中的按键产生。通过processkeyevent()函数可以发送数字、小写英文、大写英文,但是目前qtembedded上没有中文输入法,不能输入中文。2.3 murphpinyin拼音输入法的移植murphypinyin是目前为止基于qtembedded的一个比较好的开源中文输入法,而且murphypinyin带有软键盘,用户可以通过输入中文、英文、数字和符号

5、等。对于murphypinyin到qtembedded 的移植,网络上有无数参考资料,这里不再作介绍。但是将murphypinyin应用到手持终端上目前还有一个问题:murphypinyin带有的软键盘是标准的pc101键盘,按键数量无数。在对体积、分量要求很苛刻的手持终端上,触摸屏本身的尺寸受到严峻的制约,pc101键盘会占领触摸屏的大部分显示面积;而且单个按键所占面积很小,从而对触摸屏的定位精度要求很高。然而触摸屏本身受周围环境的影响较大,很简单造成定位不准。本系统将矩阵键盘映射到murphypinyin上,通过矩阵键盘输入中文、英文和数字,这样在手持终端上可以用法一般的lcd,从而降低了

6、系统成本、提高了系统的牢靠性。首先考虑的问题是:如何用键盘打开murphypinyin输入法?这里可以修改 murphypinyin软件包中的pinyinframe.cpp文件中的:boot qpinyinframe:filter(int unicode,int keycode,int modifiers,bool ispress,bool autorepeat)其中:if(!ishidden()& ispress)语句用来推断murphypinyin输入法是否已经打开并且有按键按下。假如是,则推断当前是中文模式、还是英文模式。中文模式则调用 getkey(unicode,keycode)函数

7、,按照输入的拼音搜寻汉字;英文模式则调用sendkey(unicode,keycode)函数发送大写或小写英文字母。假如unicode=9keycode=qt:key_tab,则举行中英文切换。在这里可以添加推断语句:if(keycode=qt:key numlock)。当numlock按键按下时,调用:qpinyinframe:sizehint()和qpinyinframe:show()两个函数来开启murphypinyin输入法界面。假如再次按下numlock按键,则调用qpinyinframe:hide()来躲藏输入法界面。用键盘打开murphypinyin输入法之后,可以通过键盘发送拼

8、音字母来输入汉字。通过发送 unicode=9keycode=qt:key_tab来举行中英文切换。2.4按键复用因为手持终端设备对自身的体积有严格的要求,为了缩小键盘的体积,本系统仿照手机键盘的布局,采纳按键复用的方式来缩小键盘大小。将26个英文字母按字母表挨次3个或4个一组依次罗列在29这8个数字键上,并与阿拉伯数字举行复用(见图2)。硬件上的简化必定导致软件复杂度的增强。为了使得系统能够在按下一个按键后自动识别是数字、英文大写字母、英文小写还是拼音字母,需要修改qtembedded中qkeyboard_qwscpp的 qwskeymatrixhandler:readkeyboarddata()函数。当有按键按下后,首先需要推断当前是处于何种模式:数字、拼音、小写英文还是大写英文模式,实现流程5所示。通过numlock按键和状态标记字english-mode来举行数字状态和其他几个状态的切换。通过tab按键来举行中、英文模式的切换,通过capslock按键来举行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论