<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>
    以文本方式查看主題

    -  曙海教育集團論壇  (http://www.hufushizhe.com/bbs/index.asp)
    --  Linux驅動開發  (http://www.hufushizhe.com/bbs/list.asp?boardid=33)
    ----  基于嵌入式Linux的矩陣鍵盤驅動程序研究與開發  (http://www.hufushizhe.com/bbs/dispbbs.asp?boardid=33&id=1706)

    --  作者:wangxinxin
    --  發布時間:2010-11-24 9:35:07
    --  基于嵌入式Linux的矩陣鍵盤驅動程序研究與開發

      另外,鍵盤又屬于輸入設備,Linux內核提供了輸入子系統,如鍵盤、觸摸屏、鼠標等輸入設備都可以利用輸入子系統的接口函數來實現設備驅動[4]。輸入子系統由核心層(Input Core)、驅動層和事件處理層(Event Handler)三部分組成[9]。在Linux內核中,使用輸入子系統實現輸入設備驅動的時候,驅動的核心工作是向系統報告按鍵、觸摸屏、鼠標等輸入事件,而不再需要關心文件操作接口,因為輸入子系統已經完成了文件操作接口。通過輸入子系統,實現輸入設備驅動時只需要完成以下工作:

      (1)在模塊加載函數中告知輸入子系統輸入設備可以報告的事件。例如,可通過__set_bit(EV_KEY,input_dev->evbit)來告知輸入子系統該設備可報告按鍵事件。

      (2)在模塊加載函數中注冊輸入設備。注冊函數為:int input_register_device(struct input_dev *dev);

      (3)當有輸入事件發生時,如按鍵按下/抬起、觸摸屏被觸摸/抬起/移動時,通過input_report_xxx()報告發生的事件及對應的鍵值、坐標等狀態。主要的事件類型包括EV_KEY(按鍵事件)、EV_REL(相對值,如鼠標移動,報告相對于最后一次位置的偏移)和EV_ABS(絕對值,如觸摸屏)。