usb萬能驅動安卓手機版操作「手機萬能驅動工具」

1、Input驅動程序是Linux輸入設備的驅動程序,分成遊戲桿(joystick)、滑鼠(mouse和mice)和事件設備(Event queue)3種驅動程序。其中事件驅動程序是目前通用的驅動程序,可支持鍵盤、滑鼠、觸摸屏等多種輸入設備。Android系統級深入開發——input驅動程序

支持的輸入設備

2、Input驅動程序的主設備號是13,3種驅動程序的設備號分配如下所示:

joystick遊戲桿:0~31

mouse滑鼠:32~62

mice滑鼠:63

事件設備(Event):64~95

實際上,每一種IInput設備佔用5位,因此每種設備包含的個數是32個。

3、Event設備在用戶空間大多使用read、ioctl、poll等文件系統的介面進行操作,read用於讀取輸入信息,ioctl用於獲取和設置信息,poll調用可以進行用戶空間的阻塞,當內核有按鍵中斷時,通過在中斷中喚醒poll的內核實現,這樣在用戶空間poll調用也可以返回。

Event設備在文件系統中的設備節點為:/dev/input/eventX。Android系統級深入開發——input驅動程序

Input設備節點

主設備號為13,次設備號遞增生成,為64~95,各個具體的設備在misc、touchscreen、keyboard等目錄中。

4、Event輸入驅動的架構圖如下所示:Android系統級深入開發——input驅動程序

Event輸入驅動的架構圖

輸入設備驅動程序的頭文件:include/linux/input.h。

輸入設備驅動程序的核心和Event部分代碼分別是:drivers/input/input.c和drivers/input/evdev.c。

input.h中定義了struct input_dev結構,它表示Input驅動程序的各種信息,對於Event設備分為同步設備、鍵盤、相對設備(滑鼠)、絕對設備(觸摸屏)等。

input_dev中定義歸納了各種設備的信息,例如按鍵,相對設備、絕對設備、雜項設備、LED、聲音設備、強制反饋設備、開關設備等。Android系統級深入開發——input驅動程序

input_dev結構體

Android系統級深入開發——input驅動程序
Android系統級深入開發——input驅動程序

在具體的Event驅動程序的實現中,如果得到按鍵的事件,通常需要通過以下的介面向上進行通知,這些內容也是在input.h中定義的,如下所示:

Android系統級深入開發——input驅動程序
Android系統級深入開發——input驅動程序
Android系統級深入開發——input驅動程序

5、對不同設備內容的報告均是通過input_event()函數來完成的,選擇使用了不同參數而已。在手機系統中經常使用的鍵盤(keyboard)和小鍵盤(keypad)屬於按鍵設備EV_KEY,軌跡球屬於相對設備EV_REL,觸摸屏屬於絕對設備ABS。

關於按鍵數值的定義片段如下所示:

Android系統級深入開發——input驅動程序

6、可以使用getevent對Event設備進行調試。Android系統級深入開發——input驅動程序

geteventAndroid系統級深入開發——input驅動程序

getevent -l

點擊滑鼠,出現以上信息:第一列為設備節點,第二列為輸入設備類型,第三列為按鍵掃描碼,第四列為附加信息(按下、抬起、移動等)。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/274604.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-17 14:14
下一篇 2024-12-17 14:14

相關推薦

發表回復

登錄後才能評論