一.input子系統架構
linux系統提供了input子系統,按鍵、觸控螢幕、鍵盤、滑鼠等輸入都可以利用input介面函式來實現裝置驅動,下面是input子系統架構:
input驅動程式的主裝置號是13、次裝置號的分布如下:
joystick遊戲杆:0~16
mouse滑鼠: 32~62
mice滑鼠: 63
事件裝置: 64~95
(1)驅動層功能:負責和底層的硬體裝置打交道,將底層硬體裝置對使用者輸入的響應轉換為標準的輸入事件以後再向上傳送給輸入子系統核心層(input core)。
(2)input系統核心層:input core即input layer,由driver/input/input.c及相關標頭檔案實現,它對下提供了裝置驅動層的介面,對上提供了事件處理層(event handler)的程式設計介面。
(3)事件處理層將硬體裝置上報的事件分發到使用者空間和核心。
三.應用層程式設計操作輸入裝置
1、確定裝置檔名
(1)應用層操作驅動有2條路:/dev目錄下的裝置檔案,/sys目錄下的屬性檔案
(2)input子系統用的/dev目錄下的裝置檔案,具體一般都是在 /dev/input/eventn
(3)用cat命令來確認某個裝置檔名對應哪個具體裝置。我在自己的ubuntu中實測的鍵盤是event1,而滑鼠是event3.
*由於在eventhandler層的時候,驅動發過來的資訊被eventhandler層封裝為了
struct input_event結構體,提供給應用層使用,所以在應用層直接解析這個結構體即可獲取驅動層的資訊。*
2、下面是乙個程式例子
#include
#include
#include
#include
#include
#include
#define device_key "/dev/input/event1"
#define device_mouse "/dev/input/event3"
int main(void)
while (1)
// 第3步:解析event包,才知道發生了什麼樣的輸入事件
printf("-------------------------\n");
printf("type: %hd\n", ev.type);
printf("code: %hd\n", ev.code);
printf("value: %d\n", ev.value);
printf("\n");
}// 第4步:關閉裝置
close(fd);
return
0;}
應用層學習筆記一 應用層協議原理
研究網路應用程式的核心是寫出能夠執行在不同的端系統和通過網路彼此通訊的程式。客戶 伺服器體系 客戶與伺服器程序 程序與計算機網路之間的介面 程序定址 標識接收程序需要兩種資訊,主機的位址以及定義在目的主機中的接收程序的識別符號。主機由ip位址標識。目的地埠號用於標識目的主機的接收程序。從四個方面對應...
input子系統框架
input子系統的框架 input子系統分為三個部分 1.input核心層 2.input device 3.input handler input核心層的任務是1.建立主裝置號 2.建立file operation結構體 3.註冊 裝置4.準備入口 出口 其中input準備的file operat...
表示層 應用層
表示層 功能 為異種機通訊提供一種公共語言,以便能進行互操作。這種型別的服務之所以需要,是因為不同的計算機體系結構使用的資料表示法不同。例如,ibm主機使用ebcdic編碼,而大部分pc機使用的是ascii碼。在這種情況下,便需要表示層來完成這種轉換。應用層 包含了通常要使用的協議 http協議 超...