<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > MiniGUI中開發(fā)實現(xiàn)鍵盤輸入設(shè)備方案解析

          MiniGUI中開發(fā)實現(xiàn)鍵盤輸入設(shè)備方案解析

          作者: 時間:2012-05-14 來源:網(wǎng)絡(luò) 收藏

          3.2 編寫小輸入引擎

          3.2.1 底層輸入操作函數(shù)實現(xiàn)

          對于小輸入,鼠標操作接口函數(shù)不用進行任何操作,直接返回即可,主要需要編寫的是keyboard_update及wait_event函數(shù)。當。 MiniCUI應(yīng)用程序運行時,相關(guān)的底層事件處理例程會不斷調(diào)用wait_event函數(shù)查詢是否有輸入事件發(fā)生,故在該函數(shù)中調(diào)用小驅(qū)動的 read函數(shù),獲取用戶輸入的按鍵信息。若有鍵盤事件發(fā)生,則返回IAL_KEYEVENT,底層事件處理例程就會調(diào)用keyboard_update函數(shù)進行處理,獲取當前鍵盤狀態(tài)。

          需要注意的是,由于系統(tǒng)以很高的頻率不斷調(diào)用wait_event函數(shù),因此當該函數(shù)捕捉到鍵按下事件時,需要一定時間(如100 ms)延時再返回,以避免一次按鍵產(chǎn)生多次鍵盤事件。

          使用一個一維數(shù)組state[128]記錄按鍵的狀態(tài)。該數(shù)組定義在include/common.h中。State[128]中每個元素均對應(yīng)一特定的按鍵,如果某一元素為l,說明它所對應(yīng)的鍵被按下,否則該鍵未被按下。因此,key-board_update函數(shù)要做的工作就是,根據(jù)鍵盤掃描驅(qū)動程序的返回值,更新state[128]數(shù)組的元素值,從而向上層驅(qū)動程序和應(yīng)用程序反映按鍵狀態(tài)。可見,若想實現(xiàn)任意標準鍵盤按鍵功能,只需修改keyboard_update函數(shù)里相應(yīng)的鍵值映射,或直接修改鍵盤驅(qū)動里的鍵值映射數(shù)組為對應(yīng)的標準鍵盤按鍵的系統(tǒng)掃描碼。

          3.2.2 初始化及終止函數(shù)實現(xiàn)

          在初始化函數(shù)中先打開小鍵盤,成功以后對輸入引擎的其他成員(底層輸入操作接口函數(shù))賦值,返回TRUE。終止清除函數(shù)的主要工作是關(guān)閉鍵盤輸入文件。輸入引擎相關(guān)內(nèi)容的格式可參照src/ial/目錄下的其他輸入引擎。至此,完成了小鍵盤輸入引擎(mykbd.c文件)的開發(fā)。

          3.3 輸入引擎的使用原理

          在 src/ial/ial. c中,用inputs結(jié)構(gòu)數(shù)組定義了支持的所有輸入引擎信息。系統(tǒng)啟動后,將根據(jù).cfg配置文件,在inputs結(jié)構(gòu)中尋找特定的輸入引擎作為當前的輸入引擎。然后,調(diào)用該引擎的初始化函數(shù),對全局變量cur_input(表當前使用的輸入引擎)的其他成員函數(shù)進行賦值。

          在src/sever/server.c中,函數(shù)IdleHandler4Server凋用輸入引擎中IAL_WaitEvent成員函數(shù),檢查是否有底層輸入事件發(fā)生。當有事件發(fā)生時,檢查是鼠標(觸摸屏)事件還是鍵盤事件發(fā)生,并分別用parseEvent(msg_que, event)處理這些事件。parseEvent函數(shù)中首先調(diào)用Getl-wevent(event,1we)函數(shù)。該函數(shù)利用IAL引擎中相應(yīng)底層操作函數(shù)收集底層輸入事件1we(該結(jié)構(gòu)定義在paxseEverlt函數(shù)中),parseEvent再將收集到的這些事件轉(zhuǎn)化為上層能理解的消息。具體實現(xiàn)細節(jié)可參考server.c文件。

          4 鍵盤輸入在MiniGuI中的實現(xiàn)步驟

          4.1 加載小鍵盤驅(qū)動

          有兩種方法加載:一是把該驅(qū)動加載入內(nèi)核;二是可以將編譯的*.o文件拷貝到目標板根文件系統(tǒng)巾,目標板啟動后用insmod命令動態(tài)加載。

          DIY機械鍵盤相關(guān)社區(qū):機械鍵盤DIY




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();