以文本方式查看主題 - 曙海教育集團(tuán)論壇 (http://www.hufushizhe.com/bbs/index.asp) -- Linux驅(qū)動(dòng)開發(fā) (http://www.hufushizhe.com/bbs/list.asp?boardid=33) ---- 基于嵌入式Linux的矩陣鍵盤驅(qū)動(dòng)程序研究與開發(fā) (http://www.hufushizhe.com/bbs/dispbbs.asp?boardid=33&id=1706) |
-- 作者:wangxinxin -- 發(fā)布時(shí)間:2010-11-24 9:35:07 -- 基于嵌入式Linux的矩陣鍵盤驅(qū)動(dòng)程序研究與開發(fā) 另外,鍵盤又屬于輸入設(shè)備,Linux內(nèi)核提供了輸入子系統(tǒng),如鍵盤、觸摸屏、鼠標(biāo)等輸入設(shè)備都可以利用輸入子系統(tǒng)的接口函數(shù)來(lái)實(shí)現(xiàn)設(shè)備驅(qū)動(dòng)[4]。輸入子系統(tǒng)由核心層(Input Core)、驅(qū)動(dòng)層和事件處理層(Event Handler)三部分組成[9]。在Linux內(nèi)核中,使用輸入子系統(tǒng)實(shí)現(xiàn)輸入設(shè)備驅(qū)動(dòng)的時(shí)候,驅(qū)動(dòng)的核心工作是向系統(tǒng)報(bào)告按鍵、觸摸屏、鼠標(biāo)等輸入事件,而不再需要關(guān)心文件操作接口,因?yàn)檩斎胱酉到y(tǒng)已經(jīng)完成了文件操作接口。通過(guò)輸入子系統(tǒng),實(shí)現(xiàn)輸入設(shè)備驅(qū)動(dòng)時(shí)只需要完成以下工作: (1)在模塊加載函數(shù)中告知輸入子系統(tǒng)輸入設(shè)備可以報(bào)告的事件。例如,可通過(guò)__set_bit(EV_KEY,input_dev->evbit)來(lái)告知輸入子系統(tǒng)該設(shè)備可報(bào)告按鍵事件。 (2)在模塊加載函數(shù)中注冊(cè)輸入設(shè)備。注冊(cè)函數(shù)為:int input_register_device(struct input_dev *dev); (3)當(dāng)有輸入事件發(fā)生時(shí),如按鍵按下/抬起、觸摸屏被觸摸/抬起/移動(dòng)時(shí),通過(guò)input_report_xxx()報(bào)告發(fā)生的事件及對(duì)應(yīng)的鍵值、坐標(biāo)等狀態(tài)。主要的事件類型包括EV_KEY(按鍵事件)、EV_REL(相對(duì)值,如鼠標(biāo)移動(dòng),報(bào)告相對(duì)于最后一次位置的偏移)和EV_ABS(絕對(duì)值,如觸摸屏)。 |