輸入設(shè)備都有共性:中斷驅(qū)動+字符IO,基于分層的思想,Linux內(nèi)核將這些設(shè)備的公有的部分提取出來,基于cdev提供接口,設(shè)計了輸入子系統(tǒng),所有使用輸入子系統(tǒng)構(gòu)建的設(shè)備都使用主設(shè)備號13,同時輸入子系統(tǒng)也支持自動創(chuàng)建設(shè)備文件,這些文件采用阻塞的IO讀寫方式,被創(chuàng)建在"/dev/input/"下。如下圖所示。內(nèi)核中的輸入子系統(tǒng)自底向上分為設(shè)備驅(qū)動層,輸入核心層,事件處理層。由于每種輸入的設(shè)備上報的事件都各有不同,所以為了應(yīng)用層能夠很好識別上報的事件,內(nèi)核中也為應(yīng)用層封裝了標(biāo)準(zhǔn)的接口來描述一個事件,這些接口在"/include/upai/linux/input"中。
設(shè)備驅(qū)動層是具體硬件相關(guān)的實現(xiàn),也是驅(qū)動開發(fā)中主要完成的部分,
輸入核心層主要提供一些API供設(shè)備驅(qū)動層調(diào)用,通過這些API設(shè)備驅(qū)動層上報的數(shù)據(jù)就可以傳遞到事件處理層,
事件處理層負(fù)責(zé)創(chuàng)建設(shè)備文件以及將上報的事件傳遞到用戶空間,
input的使用
input對象描述了一個輸入設(shè)備,包括它可能上報的事件,這些事件使用位圖來描述,內(nèi)核提供的相應(yīng)的工具幫助我們構(gòu)建一個input對象,大家可以參考內(nèi)核文檔"Documentation/input/input-programming.txt",里面對于input子系統(tǒng)的使用有詳細(xì)的描述。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26