Qt E中的鍵盤裝置管理

2022-03-12 16:54:31 字數 1683 閱讀 5927

@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...