linux 设备驱动 百度,Linux设备驱动之input子系统
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
作者:武漢華嵌嵌入式培訓中心 講師 李家凱
對于輸入類設備如鍵盤、鼠標、觸摸屏之類的Linux驅動,內核提供input子系統,使得這類設備的處理變得非常便捷??傮w上來講,input子系統由三部分組成: 事件驅動input核心設備驅動。
其中事件驅動負責與用戶程序打交道,諸如設備節點/dev之類的,都由他負責,我們在寫驅動時就不用實現這個了;設備驅動負責與硬件設備打交道,這里的交互很簡單,只需要讀取相關硬件的數據,然后拋給input核心就可以了;
舉個例子,以按鍵key為例,定義了設備設備號、按鍵值,配置管腳和中斷方式,然后申請中斷。在中斷服務函數中,讀取對應管腳值,用input_report函數發送給input核心,并用input_sync通知發送結束即可。另外,在模塊初始化時,定義一個input_dev的結構體,這個input_dev是input子系統設備驅動端的核心數據結構,由于輸入設備多種多樣,就是通過這個結構體告訴核心你的輸入設備類型。
其中的兩個重要成員,這些宏具體在linux/input.h中定義。
一個是,evbit,代表事件類型的指示位,常用的如
EV_SYN 0x00 同步事件
EV_KEY 0x01 按鍵事件
EV_REL 0x02 相對坐標
EV_ABS 0x03 絕對坐標
EV_MSC 0x04 其它
EV_LED 0x11 LED
EV_SND 0x12 聲音
EV_REP 0x14 Repeat
EV_FF 0x15 力反饋
EV_PWR 電源
EV_FF_STATUS 狀態
另一個是keybit,代表鍵值代碼
其他的還有
relbit 相對定位
absbit 絕對定位
mscbit Mouse Systems Corporation,大意是一些廠商使用了5字節的串口鼠標協議,但微軟使用了一種三字節協議,于是廠商造串口鼠標時,讓設備有兩種工作模式,一種是MSC模式,一種是微軟的模式
ledbit 鍵盤指示燈事件的指示位
sndbit 鍵盤發出聲音的指示位
ffbit force feedback,強制反饋設備
swbit switch,設備切換時產生的事件
下面就分別給出驅動代碼和測試程序,以供參考。
更多:www.embedhq.org/html/jsbw/2013/1121/3569.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的linux 设备驱动 百度,Linux设备驱动之input子系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 理财t+1是什么意思
- 下一篇: 树莓派怎么安装linux软件源,修改树莓