2013-07-09 227 views
0

我不確定如果通過adb注入事件的問題應該在StackOverflow或Android Enthusiasts中,請移動它,如果它沒有不屬於這裏。解釋「cat/proc/bus/input/devices」和adb shell命令的結果

無論如何,我的問題如下。

我顯然必須確定發送和接收事件的「類型」設備。我不能明確地向鍵盤設備發送觸摸事件。

經過大量的研究,我發現了sendeventgetevent命令。

所以,我想長時間按下電話的電源按鈕。

我用這個目前:

sendevent /dev/input/event3 1 116 0 
sendevent /dev/input/event3 1 116 1 

這個工程上HTC Wildfire(點擊的鏈接輸入設備上),因爲鍵盤包含了電源按鈕和116恰好是電源鍵掃描碼。

我知道什麼/dev/input/event3/1160 or 1代表。 1介於/dev/input/event3/116之間代表什麼?我如何獲得它?

移至Nexus 4。現在,我已經注意到,它有一個獨立的powerkey和鍵盤處理器

[編輯]

找到this關於在XDA sendeventgetevent

回答

2

1 「在兩者之間的/ dev /輸入/ EVENT3 /和116」 代表EV_KEY事件類型常數:

  • EV_KEY: 用於描述狀態改變鍵盤,按鈕,或其他鍵式的 設備。

你可能已經發現你自己,如果你已經用完getevent -l /dev/input/event3/並按下電源鍵。

另外要找出電源鍵輸入設備名稱,我會推薦解析輸出getevent -pl而不是/proc/bus/input/devices的內容。您正在尋找已經KEY_POWER在事件一節中列出的設備:

add device X: /dev/input/eventX 
    name:  "xxxxxxxxxx" 
    events: 
    KEY (0001): KEY_POWER 

以及適當長的電源按鍵序列(如按住1秒鐘,然後鬆開)將是:

sendevent /dev/input/eventX 1 116 1 
sendevent /dev/input/eventX 0 0 0 
sleep 1 
sendevent /dev/input/eventX 1 116 0 
sendevent /dev/input/eventX 0 0 0 

注意:getevent -pl不適用於薑餅及以下。

+0

我在哪裏可以檢索特定設備的'EV_KEY'? –

+0

EV_KEY = 1.它是一個linux內核常量。它自成立以來一直沒有改變,我懷疑它將來會改變。 'getevent -pl'輸出中的'KEY(0001):'行只是表示'EV_KEY = 0x0001'的簡短方式。 –

+0

非常感謝!我弄清楚了getevent位。我不知道發送實際命令會有什麼不同。假設'sendevent/dev/input/eventX 0 0 0'是'sleep 1'。我的錯。 –