@font-face
p.msonormal, li.msonormal, div.msonormal
p.msocaption, li.msocaption, div.msocaption
p.a, li.a, div.a
@page
@page section1
div.section1
鍵盤裝置在
qt中表現為
qwskeyboardhandler
的乙個例項,為了支援各種各樣的鍵盤裝置,
qt提供了
qwskeyboardhandler
介面,各種鍵盤裝置只需要在收到底層作業系統鍵盤裝置的按鍵以後呼叫
qwskeyboardhandler
的processkeyevent
函式即可將鍵盤資訊傳遞到
qt系統中,然後由
qwsserver
分發給適當的客戶端。
qwskeyboardhandler
最重要的函式就是提供了
processkeyevent
,方便其子類呼叫該函式將鍵碼傳遞到
qt系統中。列出了
qt預置的所有的鍵盤驅動,詳細資訊可以參考
qt官方幫助文件。
圖2-
6qwskeyboardhandler
繼承關係圖
如果要實現自定義的鍵盤裝置,那麼可以通過繼承qwskeyboardhandler來實現,主要工作分為兩部分,一部分是裝置初始化,另外一部分工作就是等待使用者按鍵,並將資訊傳遞到qt系統。
具體流程可以參照下圖:
底層鍵盤裝置已經由驅動負責了,這裡只需開啟裝置,並監聽裝置描述符,將可讀訊號關聯到自定義的slot上,當有按鍵資料可讀取時直接進行讀取。
notifier =
new qsocketnotifier(kbdfd, qsocketnotifier::read, this);
connect(notifier,
signal(activated(int)),this,slot(readkeyboarddata()));
另外一部分工作就是等待使用者按鍵,並傳遞到qt系統內部。見下圖
從底層鍵盤裝置讀取出來的資料格式可能各種各樣,如果符合linux標準輸入輸出介面,那麼就不用做任何改動, 但是經常我們會有一些特殊的按鍵設定,必須進行一定的轉換,這些工作就要在此步完成。然後由
qt::keyboardmodifiers
autorepeat
這是乙個靜態函式,因此可以直接使用,這些引數中最重要的是keycode,要將自定義的按鍵值轉換為qt內部的鍵碼,比如:qt::key_delete等等,modifiers是用於組合按鍵,像ctrl,shift的處理。第乙個引數unicode一般沒用, 可以忽略。
qt中鍵盤驅動是通過環境變數qws_keyboard來確定,如果沒有則使用預設的,如果有則使用使用者指定的,使用方法和qt中的滑鼠裝置一樣,可以參考
裝置管理 裝置管理概述
i o裝置是作業系統龐大複雜的主要原因之一,不同外部裝置之間,速度差異很大,控制介面複雜,資料表示各異,與其它功能聯絡緊密,特別是檔案系統。在這種情況下,難以針對裝置做統一的規劃與設計。對i o裝置的直接控制,是通過特定的裝置控制器進行的,主機只需要對控制器進行操作即可,無需理會具體裝置的引數細節。...
裸裝置管理
裸裝置 raw device,就是不被作業系統直接管理的裝置。這種裝置少了作業系統一層,i o效率更高。資料庫一般會用到。常與lvm聯用。建立裸裝置 mkdir raw mknod dev rawctl c 162 0 mknod dev raw raw1 c 162 1 mknod dev raw...
linux裝置管理
linux 的裝置管理 6.1 裝置管理概述 linux 裝置的分類 linux 使用套介面 socket 以檔案i o 方式提供了對網路資料的訪問。裝置驅動程式 三 裝置的識別 而多個scsi 硬碟及其各個分割槽分別賦予次裝置號1 2 3 root localhost ls dev sda l b...