新聞中心

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

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

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

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

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

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

        }

        本文引用地址:http://www.104case.com/article/151098.htm
        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 3 下一頁

        關鍵詞: 鍵盤 接口 嵌入式

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 石台县| 合肥市| 镇赉县| 徐水县| 大渡口区| 伽师县| 故城县| 仪陇县| 会宁县| 柘荣县| 明溪县| 邵阳市| 高要市| 隆昌县| 那坡县| 汉中市| 米易县| 黄冈市| 温州市| 成安县| 和静县| 饶平县| 盐城市| 略阳县| 奎屯市| 南乐县| 容城县| 湖北省| 峨边| 米易县| 汉沽区| 阳新县| 八宿县| 宝坻区| 胶南市| 南阳市| 丁青县| 凤冈县| 靖边县| 元谋县| 旬阳县|