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