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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 嵌入式Linux中基于Qt/Embedded的鍵盤接口設計

          嵌入式Linux中基于Qt/Embedded的鍵盤接口設計

          作者: 時間:2011-01-13 來源:網絡 收藏

          一個插件的實現(xiàn),通常至少需要兩個類:一個是插件封裝器類,它實現(xiàn)了插件的通用API函數(shù);另外一個是一個或多個處理器類,每個處理器類都實現(xiàn)了一種用于特殊類型插件的API。通過封裝器類才能訪問這些處理器類。下面是具體的實現(xiàn)過程:
          首先要實現(xiàn)一個自己的MyKeyDriverPlugin類,這個類繼承了QKbdDriverPlugin類,需要重新實現(xiàn)QKbdDriverPlugin::keys()函數(shù)和QKbdDriverPlugin::create()函數(shù)。
          f.JPG
          keys()函數(shù)返回一個插件的鍵值,這個鍵值不能和其他的鍵值相沖突。create()函數(shù)返回一個給定鍵值的QWSKeyboardHandler派生類的實例。

          在.cpp文件的最后,必須添加一個下面這樣的宏:Q_EXPORT_PLUGIN2(keyboard,MyKeyDriverPlugin)
          第一個參數(shù)項是目標庫名字去除任意擴展符、前綴或者版本號之后的基本名。第二個參數(shù)則是插件的類名。
          第二個要實現(xiàn)的類是處理類MyKeyboardHandler,這個類需要繼承QWSKeyboardHandler類。當驅動捕獲到鍵盤數(shù)據時,系統(tǒng)會通過套接字監(jiān)聽鍵盤信息,并在MykeyboardHandler::readKbdData()中對捕捉到的掃描數(shù)據進行處理并封裝,然后向服務器端發(fā)送鍵盤事件。
          ①打開鍵盤設備并初始化,一般調用open()函數(shù)。
          g.JPG
          ②監(jiān)控鍵盤設備,調用QScoketNotifier監(jiān)控鍵盤設備kbdFd。
          k.jpg

          ③發(fā)生鍵盤事件時讀取鍵盤事件,讀取鍵盤事件后將鍵值、按下等信息翻譯成Qt內部鍵盤事件的格式,并通過調用processKeyEvent將事件分發(fā)出去。
          l.jpg
          5 鍵盤插件在應用程序中的使用
          將鍵盤插件編譯后生成一個libkeyboard.so的動態(tài)庫,這個動態(tài)庫的名字是由Q_EXPORT_PLUGIN2宏的第一個參數(shù)決定的。派生插件默認存儲在標準插件目錄下的子目錄中,如果它們沒有存儲在正確的目錄下Qt不會找到這些插件,所以要在使用的文件系統(tǒng)中創(chuàng)建Qt的標準插件目錄。
          要想應用程序在啟動的時候能夠正確加載鍵盤插件還要設置Linux系統(tǒng)中的環(huán)境變量:
          QWS_KEYBOARD=MyKeyHandler:/dev/kbd
          MyKeyHandler對應著key()函數(shù)中的鍵值,kbd是在/dev文件夾下的鍵盤設備文件。Qt應用程序開始運行后要根據 QWS_KEYBOARD這個環(huán)境變量創(chuàng)建一個MyKeyboardHandler類。窗口部件響應服務器分發(fā)的鍵盤事件還要重新實現(xiàn)如下函數(shù)。

          }

          本文引用地址:http://www.ex-cimer.com/article/151098.htm
          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 3 下一頁

          關鍵詞: 鍵盤 接口 嵌入式

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();