新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Murphypinyin的嵌入式鍵盤設計

        基于Murphypinyin的嵌入式鍵盤設計

        作者: 時間:2010-03-02 來源:網絡 收藏

          2.3 Murphpinyin拼音輸入法的移植

          是目前為止Qt/Embedded的一個比較好的開源中文輸入法,而且帶有軟,用戶可以通過觸摸屏輸入中文、英文、數字和符號等。對于到Qt/Embedded的移植,網絡上有很多參考資料,這里不再作介紹。

          但是將Murphypinyin應用到手持終端上目前還有一個問題:Murphypinyin帶有的軟是標準的PC101,按鍵數量很多。在對體積、重量要求很苛刻的手持終端上,觸摸屏本身的尺寸受到嚴重的制約,PC101鍵盤會占據觸摸屏的大部分顯示面積;而且單個按鍵所占面積很小,從而對觸摸屏的定位精度要求很高。然而觸摸屏本身受周圍環境的影響較大,很容易造成定位不準。本系統將矩陣鍵盤映射到Murphypinyin上,通過矩陣鍵盤輸入中文、英文和數字,這樣在手持終端上可以使用普通的,從而降低了系統成本、提高了系統的可靠性。

          首先考慮的問題是:如何用鍵盤打開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上實現。為手持終端提供了一種鍵盤的解決方案。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 汕尾市| 商洛市| 榆社县| 贡觉县| 孟村| 长武县| 建始县| 贞丰县| 德钦县| 个旧市| 永修县| 万全县| 富蕴县| 孟津县| 平遥县| 常宁市| 鹤岗市| 华坪县| 肥西县| 儋州市| 平遥县| 丹阳市| 巴塘县| 安图县| 蓬莱市| 河北省| 响水县| 松滋市| 都江堰市| 夏河县| 三明市| 嵊州市| 获嘉县| 溆浦县| 惠州市| 枝江市| 通州市| 汤原县| 安丘市| 松滋市| 新巴尔虎右旗|