利用input工具發送按鍵事件

有時候在Android開發測試過程中需要用到按鍵事件,但由於其它原因不是很方便每次都用鍵盤或鼠標去點擊,這裡介紹一個adb下的工具–input工具.

使用input工具其實很簡單,首先進入adb shell,然後輸入:
[plain]
#input keyevent <keycode> 
或者直接在終端下輸入:
[plain]
$adb shell input keyevent <keycode> 
其中<keycode>表示按鍵代碼,它值在$ANDOIRD/frameworks/base/include/ui/KeycodeLabels.h頭文件中定義,如下:
[cpp]
static const KeycodeLabel KEYCODES[] = { 
    { "SOFT_LEFT", 1 }, 
    { "SOFT_RIGHT", 2 }, 
    { "HOME", 3 }, 
    { "BACK", 4 }, 
    { "CALL", 5 }, 
    { "ENDCALL", 6 }, 
    { "0", 7 }, 
    { "1", 8 }, 
    { "2", 9 }, 
    { "3", 10 }, 
    { "4", 11 }, 
    { "5", 12 }, 
    { "6", 13 }, 
    { "7", 14 }, 
    { "8", 15 }, 
    { "9", 16 }, 
    { "STAR", 17 }, 
    { "POUND", 18 }, 
    { "DPAD_UP", 19 }, 
    { "DPAD_DOWN", 20 }, 
    { "DPAD_LEFT", 21 }, 
    { "DPAD_RIGHT", 22 }, 
    { "DPAD_CENTER", 23 }, 
    { "VOLUME_UP", 24 }, 
    { "VOLUME_DOWN", 25 }, 
    { "POWER", 26 }, 
    { "CAMERA", 27 }, 
    { "CLEAR", 28 }, 
    { "A", 29 }, 
    { "B", 30 }, 
    { "C", 31 }, 
    { "D", 32 }, 
    { "E", 33 }, 
    { "F", 34 }, 
    { "G", 35 }, 
    { "H", 36 }, 
    { "I", 37 }, 
    { "J", 38 }, 
    { "K", 39 }, 
    { "L", 40 }, 
    { "M", 41 }, 
    { "N", 42 }, 
    { "O", 43 }, 
    { "P", 44 }, 
    { "Q", 45 }, 
    { "R", 46 }, 
    { "S", 47 }, 
    { "T", 48 }, 
    { "U", 49 }, 
    { "V", 50 }, 
    { "W", 51 }, 
    { "X", 52 }, 
    { "Y", 53 }, 
    { "Z", 54 }, 
    { "COMMA", 55 }, 
    { "PERIOD", 56 }, 
    { "ALT_LEFT", 57 }, 
    { "ALT_RIGHT", 58 }, 
    { "SHIFT_LEFT", 59 }, 
    { "SHIFT_RIGHT", 60 }, 
    { "TAB", 61 }, 
    { "SPACE", 62 }, 
    { "SYM", 63 }, 
    { "EXPLORER", 64 }, 
    { "ENVELOPE", 65 }, 
    { "ENTER", 66 }, 
    { "DEL", 67 }, 
    { "GRAVE", 68 }, 
    { "MINUS", 69 }, 
    { "EQUALS", 70 }, 
    { "LEFT_BRACKET", 71 }, 
    { "RIGHT_BRACKET", 72 }, 
    { "BACKSLASH", 73 }, 
    { "SEMICOLON", 74 }, 
    { "APOSTROPHE", 75 }, 
    { "SLASH", 76 }, 
    { "AT", 77 }, 
    { "NUM", 78 }, 
    { "HEADSETHOOK", 79 }, 
    { "FOCUS", 80 }, 
    { "PLUS", 81 }, 
    { "MENU", 82 }, 
    { "NOTIFICATION", 83 }, 
    { "SEARCH", 84 }, 
    { "MEDIA_PLAY_PAUSE", 85 }, 
    { "MEDIA_STOP", 86 }, 
    { "MEDIA_NEXT", 87 }, 
    { "MEDIA_PREVIOUS", 88 }, 
    { "MEDIA_REWIND", 89 }, 
    { "MEDIA_FAST_FORWARD", 90 }, 
    { "MUTE", 91 }, 
    { "PAGE_UP", 92 }, 
    { "PAGE_DOWN", 93 }, 
    { "PICTSYMBOLS", 94 }, 
    { "SWITCH_CHARSET", 95 }, 
    { "BUTTON_A", 96 }, 
    { "BUTTON_B", 97 }, 
    { "BUTTON_C", 98 }, 
    { "BUTTON_X", 99 }, 
    { "BUTTON_Y", 100 }, 
    { "BUTTON_Z", 101 }, 
    { "BUTTON_L1", 102 }, 
    { "BUTTON_R1", 103 }, 
    { "BUTTON_L2", 104 }, 
    { "BUTTON_R2", 105 }, 
    { "BUTTON_THUMBL", 106 }, 
    { "BUTTON_THUMBR", 107 }, 
    { "BUTTON_START", 108 }, 
    { "BUTTON_SELECT", 109 }, 
    { "BUTTON_MODE", 110 }, 
// NOTE: If you add a new keycode here you must also add it to several other files. 
    //       Refer to frameworks/base/core/java/android/view/KeyEvent.java for the full list. 
 
    { NULL, 0 } 
};  
input工具不僅在adb shell下使用,在C/C++代碼中也可以使用:
[cpp]
sprintf(s_keyArray, "input keyevent %d", keycode); 
system(s_keyArray); 
這樣的話,可以直接向系統發送按鍵事件。

摘自 放飛夢想,成就未來

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *