新聞中心

        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 下一頁

        關鍵詞: 鍵盤 接口 嵌入式

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 高平市| 望都县| 抚州市| 禄丰县| 龙川县| 山阴县| 新河县| 苏尼特右旗| 西青区| 岗巴县| 怀来县| 乳山市| 海丰县| 长治县| 余江县| 剑阁县| 惠来县| 丰都县| 崇州市| 玉山县| 龙南县| 扎鲁特旗| 池州市| 沽源县| 宣威市| 宣恩县| 法库县| 拉萨市| 什邡市| 乡宁县| 普宁市| 彰化市| 潮州市| 大厂| 招远市| 枣强县| 德安县| 海丰县| 昌都县| 新竹市| 抚顺市|