Linux輸入子系統學習筆記

2021-08-04 05:40:28 字數 1506 閱讀 1719

linux輸入子系統學習筆記

1、 linux輸入子系統的整體框架

linux

輸入子系統將輸入驅動抽象為三層:事件處理層、核心層、裝置驅動層。應用程式只需要跟事件處理層打交道,核心層是負責管理輸入裝置,並將訊息在事件處理層和裝置驅動層之間傳遞。linux輸入子系統整體框架如圖所示。

2、 涉及的重要資料結構

(1)  驅動程的資料結構struct input_dev

用途:驅動程input裝置的基本資料結構,驅動的主體,需要完成的大部分工作圍繞它進行,每個struct input_dev代表乙個輸入裝置。

位置:linux/input.h

資料結構的分配和初始化:

在具體的裝置驅動中分配和填充具體的裝置結構。

(2)  事件處理層的資料結構struct input_handler

用途:每個handler代表一種處理事件的方式,允許多個handler共存。

位置:

linux/input.h

資料結構的分配和初始化:

在event handler層定義具體的struct input_handler。

(3)  資料結構stuct input_handle

用途:用來建立驅動層struct input_dev和struct input_handler鍊錶的煉表項結構,使事件處理層和驅動層產生聯絡。

位置:linux/input.h

資料結構的分配和初始化:

event handler層中分配,包含在evdev.c/tsdev.c等中。

(4)  核心統一使用的資料結構struct input_event

用途:它是所有輸入事件傳送的載體,輸入系統的事件都包裝成該結構體傳送給使用者空間。

位置:linux/input.h

具體定義如下:

structinput_event ;

type:如ev_key,

鍵盤、ev_rel,相對座標、ev_abs,絕對座標等

code

:如果事件的型別**是ev_key,該**code為裝置鍵盤**.**值0~127為鍵盤上的按鍵**,0x110~0x116為滑鼠上按鍵**(在input.h中有詳細定義)。

value

:如果事件的型別**是ev_key,當按鍵按下時值為1,鬆開時值為0。

3、

輸入裝置節點操作示意圖

以下是使用者空間操作輸入裝置的乙個示意圖,其中藍色部分為input裝置的公共處理,紫色部分evdev中的相關操作。

Shuriken粒子系統學習筆記

預設展開的是粒子系統的初始化模組 定義了粒子初始化時的持續時間 迴圈方式 發射速度 大小等一些列基本的引數 emission 發射模組 控制粒子的發射速率 rate shape 形狀模組 定義粒子發射器的形狀 生命週期 速度 大小 顏色 旋轉 作用力 uv sub emitters 子發射器模組 此...

輸入子系統筆記

輸入子系統筆記 現成的驅動程式 輸入子系統 input.c核心層 input init函式中呼叫err register chrdev input major,input input fops 在輸入子系統中我們不需要建立裝置號,輸入子系統已經為我們建立好了。static const struct ...

mmc子系統學習筆記一 序

本mmc子系統主要討論了下述內容 關於mmc子系統,各硬體平台 各linux版本之間的差異 閱讀mmc子系統需要的知識準備 啥是是mmc,啥又是sd,啥又是sdio 一些linux裝置模型的重現 虛擬匯流排 mmc子系統的結構組織 關於platform匯流排,研究的主線一 關於mmc匯流排,研究的主...