input輸入子系統 大致流程

2021-06-18 01:00:46 字數 2144 閱讀 9484

1、分配乙個裝置結構體

input_dev = input_allocate_device();

input_allocate_device()函式在記憶體中為輸入裝置結構體分配乙個空間,並對其主要的成員進行了初始化

2、定義裝置所支援的動作和鍵值

_set_bit(ev_syn, input_dev->evbit);    //動作 ev_key, ev_abs

__set_bit(key_enter,input_dev->keybit);//事件 確認鍵

分別用來設定裝置所產生的事件以及上報的按鍵值。struct iput_dev中有兩個成員,乙個是evbit.乙個是keybit。

3、註冊乙個輸入裝置

err = input_register_device(input_dev);

4、支援的觸控工具型別            

input_mt_report_slot_state(input_dev, mt_tool_finger, down);

注:其他

mt_tool_pen等

5、(1)上報乙個按鍵產生的確認事件

input_report_key(data->input_dev, key_enter, 1);

input_sync(data->input_dev);

input_report_key(data->input_dev, key_enter, 0);

input_sync(data->input_dev);

(2)(2.1)宣告

多點觸控:abs_mt_position_x,abs_mt_position_y

(必選)input_set_abs_params(input_dev, abs_mt_position_x, 0, screen_max_x, 0, 0);

(必選)input_set_abs_params(input_dev, abs_mt_position_y, 0, screen_max_y, 0, 0);

(可選)input_set_abs_params(input_dev, abs_mt_tracking_id, 0, 255, 0, 0);

(可選)input_set_abs_params(input_dev, abs_mt_pressure, 0, 255, 0, 0);

(2.2)上報乙個滑動 // 沿x軸滑動

report_abs_value(data->input_dev, screen_max_x, screen_max_y / 2, true);

report_abs_value(data->input_dev, 0, screen_max_y / 2, true);

report_abs_value(data->input_dev, 0, screen_max_y / 2, false);

6、idc配置檔案

當輸入裝置配置(idc)被載入之後,系統將把輸入裝置分為觸控螢幕(touch screen),觸控板(touch pad)或

指標裝置(pointer device).

(6.1)觸控螢幕  :使用它,可以直接操作螢幕上的物件。

if 驅動**設定裝置為觸控螢幕__set_bit(input_prop_direct, input_dev->keybit);

觸控螢幕裝置;

else if  idc中設定touch.devicetype = touchscreen

觸控螢幕裝置;

else

其他裝置

(6.2)觸控板  :它提供絕對的定位資訊給觸控區域內的應用程式。

if 驅動**設定__set_bit(rel_x, input->relbit);__set_bit(rel_y, input->relbit);

觸控板裝置;

else if  idc中指定裝置屬性

觸控板裝置;

else

其他裝置

(6.3)指標裝置:使用它,通過游標間接操作螢幕上的物件。手指為多點觸控指標手勢,其它工具,如鐵筆,

被解釋為使用絕對位置。

if 驅動**設定裝置為指標裝置__set_bit(input_prop_pointer, dev->propbit);

指標裝置;

else if  idc中指定裝置屬性

指標裝置;

else

其他裝置

核心輸入子系統input解析

android x windows qt等眾多應用對於linux系統中鍵盤 滑鼠 觸控螢幕等輸入裝置的支援都通過 或越來越傾向於標準的input輸入子系統。因為input子系統已經完成了字元驅動的檔案操作介面,所以編寫驅動的核心工作是完成input系統留出的介面,工作量不大。但如果你想更靈活的應用它...

linux驅動 Input 輸入子系統

1,哪些驅動裝置使用驅動子系統更方便簡單?像按鍵,觸控螢幕,滑鼠等輸入裝置我們可以採用input介面函式來實現裝置驅動,那麼採用input輸入子系統有什麼優點?其實一句話,採用input輸入子系統可以使驅動程式變得異常簡單。2,input輸入子系統的體系結構 主要包括三大體系結構 裝置驅動層driv...

input輸入子系統分析

1.檢視input子系統支援哪些裝置 cat proc bus input devices 2.應用程式如何使用 fd mouse open dev input event0 o rdwr event1表示滑鼠事件,input下的裝置檔案主裝置號都為13,如下圖所示 根據開啟裝置的主裝置號為13,知...