首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于Murphypinyin的嵌入式键盘设计
来源:本站整理  作者:佚名  2010-03-02 09:02:07



  2.3 Murphpinyin拼音输入法的移植

  Murphypinyin是目前为止基于Qt/Embedded的一个比较好的开源中文输入法,而且Murphypinyin带有软键盘,用户可以通过触摸屏输入中文、英文、数字和符号等。对于Murphypinyin到Qt/Embedded的移植,网络上有很多参考资料,这里不再作介绍。

  但是将Murphypinyin应用到手持终端上目前还有一个问题:Murphypinyin带有的软键盘是标准的PC101键盘,按键数量很多。在对体积、重量要求很苛刻的手持终端上,触摸屏本身的尺寸受到严重的制约,PC101键盘会占据触摸屏的大部分显示面积;而且单个按键所占面积很小,从而对触摸屏的定位精度要求很高。然而触摸屏本身受周围环境的影响较大,很容易造成定位不准。本系统将矩阵键盘映射到Murphypinyin上,通过矩阵键盘输入中文、英文和数字,这样在手持终端上可以使用普通的LCD,从而降低了系统成本、提高了系统的可靠性。

  首先考虑的问题是:如何用键盘打开Murphypinyin输入法?这里可以修改Murphypinyin软件包中的PinyinFrame.cpp文件中的:

  boot QPinyinFrame::filter(int unicode,int keycode,int modifiers,bool isPress,bool autoRepeat)

  其中:if(!isHidden()&& isPress)语句用来判断Murphypinyin输入法是否已经打开并且有按键按下。如果是,则判断当前是中文模式、还是英文模式。中文模式则调用 GetKey(unicode,keycode)函数,根据输入的拼音搜索汉字;英文模式则调用SendKey(unicode,keycode)函数发送大写或小写英文字母。如果unicode==9&&keycode==Qt::Key_Tab,则进行中英文切换。在这里可以添加判断语句:if (keycode==Qt::Key NumLock)。当NumLock按键按下时,调用:QPinyinFrame::sizeHint()和QPinyinFrame::show()两个函数来开启Murphypinyin输入法界面。如果再次按下NumLock按键,则调用QPinyinFrame::hide()来隐藏输入法界面。

  用键盘打开Murphypinyin输入法之后,可以通过键盘发送拼音字母来输入汉字。通过发送unicode=9&&keycode==Qt::Key_Tab来进行中英文切换。


  2.4按键复用

  由于手持终端设备对自身的体积有严格的要求,为了缩小键盘的体积,本系统模仿手机键盘的布局,采用按键复用的方式来缩小键盘大小。将26个英文字母按字母表顺序3个或4个一组依次排列在2~9这8个数字键上,并与阿拉伯数字进行复用(见图2)。

  硬件上的简化必然导致软件复杂度的增加。为了使得系统能够在按下一个按键后自动识别是数字、英文大写字母、英文小写还是拼音字母,需要修改 Qt/Embedded中qkeyboard_qws.cpp的QWSKEYMATRIXHandler::ReadKeyboardData()函数。

  当有按键按下后,首先需要判断当前是处于何种模式:数字、拼音、小写英文还是大写英文模式,实现流程如图5所示。通过NumLock按键和状态标志字English-Mode来进行数字状态和其他几个状态的切换。通过Tab按键来进行中、英文模式的切换,通过CapsLock按键来进行英文大小写字母的切换。

  为了使一个按键能够输入不同的字符,本系统使用不同的key_ID值来标识各个字符,这样,每按一次键都是不同的。图6是对于按键2的复用过程。根据不同的key_ID结合当前所处的输入模式,发送相应的数字、小写英文或大写英文字符。

  3  总  结

  本文介绍了基于S3C2440的矩阵键盘的硬件设计方法和软件的驱动开发方法,通过将Murphpinyin开源软件包与Qt/Embeded自带输入法的融合,使用按键复用的策略,采用较少的按键,构建了一款可输入数字、中/英文的嵌入式键盘,并在S3C2440上实现。为手持终端提供了一种嵌入式键盘的解决方案。

上一页  [1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:28,000.00000 毫秒