輸入設(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讀寫(xiě)方式,被創(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)開(kāi)發(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)的事件傳遞到用戶空間,

移動(dòng)開(kāi)發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開(kāi)發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

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ì)的描述。

        		

網(wǎng)友評(píng)論