基於 mini2440 電阻式觸控螢幕(三):Linux輸入子系統(InputSubsystem)

來源:互聯網
上載者:User

參考:http://blog.chinaunix.net/uid-22174347-id-1786941.html

==========================================================

開發環境

編譯系統 :fedora9

編譯器 :arm-linux-4.4.3

主控晶片 :S3C2440

開發板 :mini2440

==========================================================

一、電阻式觸控螢幕工作原理 
二、 S3C2440 電阻式觸控螢幕介面、內部ADC結構
三、Linux輸入子系統(InputSubsystem)
四、mini2440觸控螢幕驅動分析

==========================================================

三、Linux輸入子系統(InputSubsystem)

1,linux輸入子系統簡述

    其實驅動這部分大多還是轉載別人的,linux輸入子系統後面再詳細分析。

在Linux中,輸入子系統是由輸入子系統裝置驅動層、輸入子系統核心層(InputCore)和輸入子系統事件處理層(Event Handler)組成。其中裝置驅動層提供對硬體各寄存器的讀寫訪問和將底層硬體對使用者輸入訪問的響應轉換為標準的輸入事件,再通過核心層提交給事件處理層;而核心層對下提供了裝置驅動層的編程介面,對上又提供了事件處理層的編程介面;而事件處理層就為我們使用者空間的應用程式提供了統一訪問裝置的介面和驅動層提交來的事件處理。所以這使得我們輸入裝置的驅動部分不在用關心對裝置檔案的操作,而是要關心對各硬體寄存器的操作和提交的輸入事件。下面用圖形來描述一下這三者的關係吧!

輸入子系統與驅動關係

2、輸入子系統裝置驅動層實現原理

   在Linux中,Input裝置用input_dev結構體描述,定義在input.h中。裝置的驅動只需按照如下步驟就可實現了。

(1)、在驅動模組載入函數中設定Input裝置支援input子系統的資料;

(2)、將Input裝置註冊到input子系統中;

(3)、在Input裝置發生輸入操作時(如:鍵盤被按下/抬起、觸控螢幕被觸摸/抬起/移動、滑鼠被移動/單擊/抬起時等),提交所發生的事件及對應的索引值/座標等狀態。

Linux中輸入裝置的事件類型有(這裡只列出了常用的一些,更多請看linux/input.h中):

EV_SYN     0x00     同步事件EV_KEY     0x01     按鍵事件EV_REL     0x02     相對座標(如:滑鼠移動,報告的是相對最後一次位置的位移)EV_ABS     0x03     絕對座標(如:觸控螢幕和操作杆,報告的是絕對的座標位置)EV_MSC     0x04     其它EV_LED     0x11     LEDEV_SND     0x12     聲音EV_REP     0x14     RepeatEV_FF      0x15     力反饋

用於提交較常用的事件類型給輸入子系統的函數有:

void input_report_key(struct input_dev *dev, unsigned int code, int value); //提交按鍵事件的函數void input_report_rel(struct input_dev *dev, unsigned int code, int value); //提交相對座標事件的函數void input_report_abs(struct input_dev *dev, unsigned int code, int value); //提交絕對座標事件的函數注意,在提交輸入裝置的事件後必須用下列方法使事件同步,讓它告知input系統,裝置驅動已經發出了一個完整的報告:void input_sync(struct input_dev *dev)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.