android monkey命令学习与脚本制作

简单命令:

adb shell monkey -f /sdcard/Music/monkey.csh -v 1

一.monkey测试命令有哪些选项?

1:常用选项

--help:打印帮助信息
-v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0 。-v -v -v 为最详细日志。

2:时间选项

-s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如: -s 200
--throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)。如:--throttle 100
--pct-touch:指定触摸事件的百分比,如:--pct-touch 5% , 相关的还有以下option:
--pct-motion <percent> (滑动事件)

--pct-trackball <percent> (轨迹球事件)

--pct-nav <percent> (导航事件 up/down/left/right)

--pct-majornav <percent> (主要导航事件 back key 、 menu key)

--pct-syskeys <percent> (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)

--pct-appswitch <percent> (activity之间的切换)

--pct-anyevent <percent>(任意事件)

3:约束选项

-p:指定有效的package(如不指定,则对系统中所有package有效),一个-p 对应一个有效package, 如:-p com.ckt -p com.ckt.asura;

-c:activity必须至少包含一个指定的category,才能被启动,否则启动不了;

4:调试选项

--dbg-no-events:初始化启动的activity,但是不产生任何事件。
--hprof:指定该项后在事件序列发送前后会立即生成分析报告  —— 一般建议指定该项。
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
--kill-process-after-error:发生错误后直接杀掉进程
--monitor-native-crashes:跟踪本地方法的崩溃问题
--wait-dbg:知道连接了调试器才执行monkey测试

二.一个完整的monkey语句?

adb shell monkey -p your.package.name --pct-touch 30 --ignore-crashes  --ignore-timeouts--throttle 250 -s 2  -v -v -v 5000000
触摸事件占30%,忽略crash和超时,每个事件间隔250ms,输出最详细日志,执行500万次

三.如何保存不连着电脑跑monkey?

1.输入命令进入shell环境:adb shell
2.输入monkey语句执行:monkey –p com.android.mms –s 100 --throttle 1000 –v –v –v 15000 > /mnt/sdcard/monkey_test.txt&

四.如何跑多个apk的monkey?

黑名单:执行除了黑名单中以外的apk;白名单:只执行在白名单中的apk。
黑名单的设置方法:
a.创建一个名称为blacklist的txt文档,在文件中输入应用程序的包名,如mms应用,则在文件中输入com.Android.mms;如果有多个应用程序不想被执行,则在文件中添加多个包名,注意包名与包名之间均用回车键。
b.将blacklist.txt的文件导入到手机的/data目录下,然后在执行monkey测试的时候使用--pkg-blacklist-file参数再加上blacklist文件的存储路径,其他的参数设置则和测试单一apk没有区别。
白名单的设置方法:
白名单的设置方法和黑名单的设置方法基本一致,只是在创建txt文档的时候,文件的命令应为whitelist。在执行monkey的时候,只执行白名单中的应用。

例子:
monkey –pkg-blacklist-file /data/blacklist.txt -c <options> -s <seed> <限制语句> --throttle <milliseconds> -v 执行次数> C:\blacklist_test.txt //执行黑名单以外的应用
monkey –pkg-whitelist-file /data/whitelist.txt -c <options> -s <seed> <限制语句> --throttle <milliseconds> -v 执行次数 > C:\whitelist_test.txt //执行白名单的应用

五.如何关闭mokey?

1. ps命令查找uiautomator的进程
cmd命令行窗口输入:adb shell ps | grep monkey
返回来的第一个数字,即是monkey的进程号
2.kill 命令结束进程
继续输入: adb shell kill [刚才查到的进程号]

六.如何分析monkey日志?

1、 ANR问题:在日志中搜索“ANR”
2、 崩溃问题:在日志中搜索“Exception”
3、搜索"crash" 、"error"

七.如何重现BUG?

1、 找到是monkey里面的哪个地方出错

2、 查看Monkey里面出错前的一些事件动作,并手动执行该动作

3、 若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样

八.monke的测试策略?

单个apk的验收测试时,使用单一apk且不忽略异常的命令执行

单个apk的解决问题的测试时,使用单一apk且忽略异常的命令执行。这样可以在一次执行的过程中发现应用程序中的多个问题。

单个apk的应用程序的压力/健壮性测试时,主要缩短monkey测试中事件与事件之间的延迟时间,验证在快速的事件响应的过程中,程序是否能正常运行。--throttle的值设定为500或者更小,一般都使用500毫秒的延迟事件。

在进行apk的集合测试(测试对象为多个APP,手机测试?)时,对于高频率使用的apk、长时间使用的apk都要包含在执行的应用程序中间。

APK分类具体:

高频率使用的apk如:Phone、Contacts、Message、Settings、File Manager、Gallery、Input Method

长时间使用的apk如:Phone、Browser、Music player、Camera、Video player、Email、Chat

其他的apk如:Calendar、Notepad、Calculator、FM Radio、Google Search


一、什么是Monkey

Monkey是Android自身提供的,可以通过adb shell模拟用户行为,发送一些伪随机用户事件到目标设备上。

Monkey和它的直接意思一样,可以像一个猴子一样,疯狂的输入各种随机事件到设备上,像是一个猴子在疯狂的点击设备。

既然Monkey有这样的功能,我们就可以利用它来对Android App做压力测试,可以在规定的范围内,任意随机触发各种事件,来验证App的抗压性和稳定性。这些随机事件包括:点击屏幕、滑动屏幕、各种无力按键等。

二、简单的使用Monkey

Monkey主要是借助adb命令来让PC与Android设备连接,adb是一种Android调试工具,在PC上配置好环境即可使用。

Monkey使用起来非常的简单,基本命令如下:

adb shell monkey <event-count>

这样直接在Terminal中输入,就会像设备上发送指定的事件数的事件。但是在Terminal中不会有任何输出,如果需要有输出,可以加上-v参数。-v表示输出的Log级别,-v最低,-v -v -v最高。

adb shell monkey -v <event-count>

上面的命令表示向设备输入100个随机事件,如果正确输出,可以在设备上看到各种点击效果一闪而过。

但是这种随机的输入其实也是没什么作用的,通常我们会需要制定在某一个App内做随机事件。那么,可以再增加-p参数,完整命令如下:

Adb shell monkey -p com.mipay.wallet -v <event-count>

更多其他高级的命令,可以通过adb shell monkey -h进行查看。

三、Monkey的高级用法

1、设置事件间隔

上面给出的例子,基本上100次点击会在瞬间被完成,肉眼可能可以感受到被点击,但是无法明显的感觉到有那么多次。所以设定每次事件的间隔时常,是有必要的。为Monkey设定事件的间隔,使用--throttle参数。

adb shell monkey --throttle <milliseconds>

2、复现随机点击的事件

Monkey虽然是随机点击的,但是我们主要是用它来做压力测试。所以如果在碰到崩溃的时候,可以通过一种方式,重复之前的随机事件,再来一次,看看崩溃的问题。Monkey也提供了这样的参数 -s

adb shell monkey -s <seed> <event-count>

可以看到,在每次执行完Monkey之后,从输出里可以看到当前的seed值,只要通过-s参数指定相同的seed,就可以重复刚才的操作。

例如如果需要重复上面的操作,就需要在Terminal中输入:

adb shell monkey -s 1487572980979 -v 1000

3、忽略崩溃

正常来说,如果在Monkey执行的阶段,出现了崩溃,会立即停止接下去的执行。但是有时候,我们在执行Monkey的时候,是在无人员干涉的情况下,例如想要它执行一夜,等等情况。那么如果出现崩溃就停止执行,明显不是我们需要的。在Monkey中,可以通过—ignore-crashes来忽略掉异常崩溃。

adb shell monkey —ignore-crashes <event-count>

如果用此参数忽略了崩溃,在发生崩溃的时候,会继续指定,表现是又从新开始执行Monkey了,而同时,用-s设定的seed值将不会生效。

4、忽略ANR

ANR是Android的一个错误,在页面无法响应事件的时候会报出来。一般遇到这样的情况,表示当前有耗时操作在UI线程指定,导致卡UI了。

在Monkey中,如果遇上ANR,同样会停止继续执行。如果想要忽略ANR,让其触发的时候依然执行下去,可以使用—ignore-timeouts参数。

adb shell monkey —ignore-timeouts <event-count>

同样它也会导致-s失效。

四、指定Monkey事件

在Monkey中,虽然输入的事件是随机产生的,但是可以指定输入事件类型的百分比,让其控制在我们需要的范围内。

在Monkey中,可以设定的事件类型有:

  • --pct-touch <percent>:指定触摸事件的百分比。
  • --pct-motion <percent>:指定滑动事件的百分比。
  • --pct-trackball <percent>:指定轨迹球事件的百分比。
  • --pct-nav <percent>:指定导航事件中,up、down、left、right等事件的百分比。
  • --pct-majornav <percent>:指定导航事件中,back、menu等事件的百分比。
  • --pct-syskeys <percent>:指定系统按键的百分比,包括HOME、Back、音量等。
  • --pct-appswitch <percent>:指定Activity之间切换的比例。
  • --pct-anyevent <percent>:指定任意事件的百分比。

默认情况下,如果不设置,会是--pct-anyevent为百分之百,也就是纯随机事件。如果通过其他的参数配置了之后,如果相加的百分比不为百分百,余下的百分比部分也会生成随机事件。

从Monkey的输出Log中,可以看出指定事件的百分比。

例如这里输入触摸事件为百分百,Event percentages的0表示的就是触摸事件,为100%。

五、举个栗子

到这里基本上就介绍为Monkey中一些主要的参数含义了,更多的可以通过-h查看帮助文档。

基本上配置事件百分比,有一些事件已经随着Android发展被消失掉了,例如轨迹球,在现在主流的设备上,已经基本上看不见轨迹球的影子了。

那么就本文介绍的一些命令,简单配置一个可以直接使用的例子:

adb shell monkey -p com.miui.cal —throttle 100 —-ignore-crashes —-ignore-timeouts --pct-touch 50 --pct-majornav 10 --pct-syskeys 20 --pct-appswitch 20 -v 1000 > ./monket_log.txt


脚本编写:

    1. /** 
    2.  * monkey event queue. It takes a script to produce events 
    3.  *  
    4.  * sample script format: 
    5.  *      type= raw events 
    6.  *      count= 10 
    7.  *      speed= 1.0 
    8.  *      start data >> 
    9.  *      captureDispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314, 
    10.  *          0.06666667,0,0.0,0.0,65539,0) 
    11.  *      captureDispatchKey(5113146,5113146,0,20,0,0,0,0) 
    12.  *      captureDispatchFlip(true) 
    13.  *      ... 
    14.  */ 

    DispatchPointer(downTime, eventTime,action, x, y, pressure, size, metaState, xPrecision, yPrecision,device, edgeFlags);  

    其中action=0时为按下,action=1时为移动,action=2时为抬起,action=3时为取消。x、y为坐标点。pressure为压力值类型为float,size为点击范围大小类型为float。device为deviceID。

  1. 以下可以代表点击:

  2. captureDispatchPointer(0,0,0,524,390,0,0,0,0,0,0,0)
    captureDispatchPointer(0,0,1,524,390,0,0,0,0,0,0,0)

  3. 以下可以代表滑动:手机反映快不起作用可以做设置几轮

  4. captureDispatchPointer(0,0,0,524,390,0,0,0,0,0,0,0)
    captureDispatchPointer(0,0,2,524,690,0,0,0,0,0,0,0)

  5. <MonkeyScript>

    MonkeyScript是monkey的脚本语言,是一组可以被Monkey识别的命令集合,可以帮我们完成一系列的被固定的重复性操作。

    脚本优势:简单、快捷、不需要借助任何工具,只是运行一个脚本文件

    脚本缺点:只能简单实现坐标、按键等基本操作(根据像素点来进行操作)

  6. 2

    <脚本格式>

    #头文件、控制monkey发送消息的参数

    type=raw events

    count=10

    speed=1.0

    #以下为monkey命令

    start data >>

    LaunchActivity(pkg_name,activity)

    DispatchPress(KEYCODE_ENTER)

    DispatchPress(KEYCODE_HOME)

    ---->前三行是脚本头。count为脚本中包含的指令数目。speed为执行速度。

    ---->start data >>后面是执行的命令。

  7. 3

    <常见API>

    LaunchActivity(pkg_name, cl_name): 启动应用的Activity。参数:包名和启动的Activity。

     

    Tap(x, y, tapDuration): 模拟一次手指单击事件。参数:x,y为控件坐标,tapDuration为点击的持续时间,此参数可省略。

     

    DispatchPress(keyName): 按键。注:keyName值可以百度android keycode列表获取

     

    RotateScreen(rotationDegree, persist): 旋转屏幕。 参数:rotationDegree为旋转角度, e.g. 1代表90度;persist表示旋转之后是否固定,0表示旋转后恢复,非0则表示固定不变。

     

    DispatchFlip(true/false): 打开或者关闭软键盘。

     

    LongPress():  长按2秒。

     

    PressAndHold(x, y, pressDuration):  模拟长按事件。

     

    DispatchString(input):  输入字符串。

     

    Drag(xStart, yStart, xEnd, yEnd, stepCount):  用于模拟一个拖拽操作。

     

    PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模拟缩放手势。

     

    UserWait(sleepTime): 休眠一段时间

     

    DeviceWakeUp(): 唤醒屏幕。

     

    ProfileWait: 等待5秒。

     

    ---->在android sdk路径-tools下,使用sdk中的工具hierarchyviewer.bat或者uiautomatorviewer.bat,获取API方法中控件位置(X,Y轴的坐标)。  

    ------》或者打开手机开发者模式里面的TP画线功能
  8. 4

    <脚本举例>

    要求:打开浏览器,输入www.baidu.com, 退出浏览器。这个步骤进行重复压力测试。

  9. 5

    ---->脚本文件browser.txt编写内容如下:

    #头文件、控制monkey发送消息的参数

    type=raw events

    count=10

    speed=1.0

    #以下为脚本正文

    start data >>

    #1.打开浏览器

    LaunchActivity(com.android.browser,com.android.browser.BrowserActivity)

    ProfileWait()

    #2.清空网址

    Tap(223,146)

    ProfileWait()

    DispatchPress(112)

    ProfileWait()

    #3.输入网址

    DispatchString(www.baidu.com)

    ProfileWait()

    #4.确认,载入网址

    DispatchPress(KEYCODE_ENTER)

    ProfileWait()

    #5.完成退出浏览器

    DispatchPress(KEYCODE_HOME)

    ProfileWait()

  10. 6

    ---->将browser.txt文件push到手机中

    adb push D:\browser.txt data/local/tmp

    D:\browser.txt 为本地脚本文件路径及名称,data/local/tmp为手机路径

     

    ---->运行脚本

    adb shell monkey -f data/local/tmp/browser.txt -v -v 200

  11. 7

    <日志查看补充>

    ---->先把日志输出到本地

    ---->注意观察switch后面的内容,一般错误都会显示在这个后面

    ---->ANR问题:日志中搜索ANR关键字

    ---->奔溃问题:在日志中搜索Exception问题


KEYCODE列表

电话键


 
KEYCODE_CALL 拨号键 5
KEYCODE_ENDCALL 挂机键 6
KEYCODE_HOME 按键Home 3
KEYCODE_MENU 菜单 82
KEYCODE_BACK 返回键 4
KEYCODE_SEARCH 搜索 84
KEYCODE_CAMERA 拍照键 27
KEYCODE_FOCUS 拍照对焦键 80
KEYCODE_POWER 电源键 26
KEYCODE_NOTIFICATION 通知键 83
KEYCODE_MUTE 话筒静音键 91
KEYCODE_VOLUME_MUTE 扬声器静音键 164
KEYCODE_VOLUME_UP 音量增加键 24
KEYCODE_VOLUME_DOWN 音量减小键 25


 

控制键


 
KEYCODE_ENTER 回车键 66
KEYCODE_ESCAPE ESC键 111
KEYCODE_DPAD_CENTER 导航键 确定键 23
KEYCODE_DPAD_UP 导航键 向上 19
KEYCODE_DPAD_DOWN 导航键 向下 20
KEYCODE_DPAD_LEFT 导航键 向左 21
KEYCODE_DPAD_RIGHT 导航键 向右 22
KEYCODE_MOVE_HOME 光标移动到开始键 122
KEYCODE_MOVE_END 光标移动到末尾键 123
KEYCODE_PAGE_UP 向上翻页键 92
KEYCODE_PAGE_DOWN 向下翻页键 93
KEYCODE_DEL 退格键 67
KEYCODE_FORWARD_DEL 删除键 112
KEYCODE_INSERT 插入键 124
KEYCODE_TAB Tab键 61
KEYCODE_NUM_LOCK 小键盘锁 143
KEYCODE_CAPS_LOCK 大写锁定键 115
KEYCODE_BREAK Break/Pause键 121
KEYCODE_SCROLL_LOCK 滚动锁定键 116
KEYCODE_ZOOM_IN 放大键 168
KEYCODE_ZOOM_OUT 缩小键 169


 

组合键


 
KEYCODE_ALT_LEFT Alt+Left
KEYCODE_ALT_RIGHT Alt+Right
KEYCODE_CTRL_LEFT Control+Left
KEYCODE_CTRL_RIGHT Control+Right
KEYCODE_SHIFT_LEFT Shift+Left
KEYCODE_SHIFT_RIGHT Shift+Right


 

基本

 
KEYCODE_0 按键'0' 7
KEYCODE_1 按键'1' 8
KEYCODE_2 按键'2' 9
KEYCODE_3 按键'3' 10
KEYCODE_4 按键'4' 11
KEYCODE_5 按键'5' 12
KEYCODE_6 按键'6' 13
KEYCODE_7 按键'7' 14
KEYCODE_8 按键'8' 15
KEYCODE_9 按键'9' 16
KEYCODE_A 按键'A' 29
KEYCODE_B 按键'B' 30
KEYCODE_C 按键'C' 31
KEYCODE_D 按键'D' 32
KEYCODE_E 按键'E' 33
KEYCODE_F 按键'F' 34
KEYCODE_G 按键'G' 35
KEYCODE_H 按键'H' 36
KEYCODE_I 按键'I' 37
KEYCODE_J 按键'J' 38
KEYCODE_K 按键'K' 39
KEYCODE_L 按键'L' 40
KEYCODE_M 按键'M' 41
KEYCODE_N 按键'N' 42
KEYCODE_O 按键'O' 43
KEYCODE_P 按键'P' 44
KEYCODE_Q 按键'Q' 45
KEYCODE_R 按键'R' 46
KEYCODE_S 按键'S' 47
KEYCODE_T 按键'T' 48
KEYCODE_U 按键'U' 49
KEYCODE_V 按键'V' 50
KEYCODE_W 按键'W' 51
KEYCODE_X 按键'X' 52
KEYCODE_Y 按键'Y' 53
KEYCODE_Z 按键'Z' 54


 

符号


 
KEYCODE_PLUS 按键'+'
KEYCODE_MINUS 按键'-'
KEYCODE_STAR 按键'*'
KEYCODE_SLASH 按键'/'
KEYCODE_EQUALS 按键'='
KEYCODE_AT 按键'@'
KEYCODE_POUND 按键'#'
KEYCODE_APOSTROPHE 按键''' (单引号)
KEYCODE_BACKSLASH 按键'\'
KEYCODE_COMMA 按键','
KEYCODE_PERIOD 按键'.'
KEYCODE_LEFT_BRACKET 按键'['
KEYCODE_RIGHT_BRACKET 按键']'
KEYCODE_SEMICOLON 按键';'
KEYCODE_GRAVE 按键'`'
KEYCODE_SPACE 空格键


 

小键盘


 
KEYCODE_NUMPAD_0 小键盘按键'0'
KEYCODE_NUMPAD_1 小键盘按键'1'
KEYCODE_NUMPAD_2 小键盘按键'2'
KEYCODE_NUMPAD_3 小键盘按键'3'
KEYCODE_NUMPAD_4 小键盘按键'4'
KEYCODE_NUMPAD_5 小键盘按键'5'
KEYCODE_NUMPAD_6 小键盘按键'6'
KEYCODE_NUMPAD_7 小键盘按键'7'
KEYCODE_NUMPAD_8 小键盘按键'8'
KEYCODE_NUMPAD_9 小键盘按键'9'
KEYCODE_NUMPAD_ADD 小键盘按键'+'
KEYCODE_NUMPAD_SUBTRACT 小键盘按键'-'
KEYCODE_NUMPAD_MULTIPLY 小键盘按键'*'
KEYCODE_NUMPAD_DIVIDE 小键盘按键'/'
KEYCODE_NUMPAD_EQUALS 小键盘按键'='
KEYCODE_NUMPAD_COMMA 小键盘按键','
KEYCODE_NUMPAD_DOT 小键盘按键'.'
KEYCODE_NUMPAD_LEFT_PAREN 小键盘按键'('
KEYCODE_NUMPAD_RIGHT_PAREN 小键盘按键')'
KEYCODE_NUMPAD_ENTER 小键盘按键回车


 

功能键


 
KEYCODE_F1 按键F1
KEYCODE_F2 按键F2
KEYCODE_F3 按键F3
KEYCODE_F4 按键F4
KEYCODE_F5 按键F5
KEYCODE_F6 按键F6
KEYCODE_F7 按键F7
KEYCODE_F8 按键F8
KEYCODE_F9 按键F9
KEYCODE_F10 按键F10
KEYCODE_F11 按键F11
KEYCODE_F12 按键F12


 

多媒体键


 
KEYCODE_MEDIA_PLAY 多媒体键 播放
KEYCODE_MEDIA_STOP 多媒体键 停止
KEYCODE_MEDIA_PAUSE 多媒体键 暂停
KEYCODE_MEDIA_PLAY_PAUSE 多媒体键 播放/暂停
KEYCODE_MEDIA_FAST_FORWARD 多媒体键 快进
KEYCODE_MEDIA_REWIND 多媒体键 快退
KEYCODE_MEDIA_NEXT 多媒体键 下一首
KEYCODE_MEDIA_PREVIOUS 多媒体键 上一首
KEYCODE_MEDIA_CLOSE 多媒体键 关闭
KEYCODE_MEDIA_EJECT 多媒体键 弹出
KEYCODE_MEDIA_RECORD 多媒体键 录音


 

手柄按键


 
KEYCODE_BUTTON_1 通用游戏手柄按钮#1
KEYCODE_BUTTON_2 通用游戏手柄按钮 #2
KEYCODE_BUTTON_3 通用游戏手柄按钮 #3
KEYCODE_BUTTON_4 通用游戏手柄按钮 #4
KEYCODE_BUTTON_5 通用游戏手柄按钮 #5
KEYCODE_BUTTON_6 通用游戏手柄按钮 #6
KEYCODE_BUTTON_7 通用游戏手柄按钮 #7
KEYCODE_BUTTON_8 通用游戏手柄按钮 #8
KEYCODE_BUTTON_9 通用游戏手柄按钮 #9
KEYCODE_BUTTON_10 通用游戏手柄按钮 #10
KEYCODE_BUTTON_11 通用游戏手柄按钮 #11
KEYCODE_BUTTON_12 通用游戏手柄按钮 #12
KEYCODE_BUTTON_13 通用游戏手柄按钮 #13
KEYCODE_BUTTON_14 通用游戏手柄按钮 #14
KEYCODE_BUTTON_15 通用游戏手柄按钮 #15
KEYCODE_BUTTON_16 通用游戏手柄按钮 #16
KEYCODE_BUTTON_A 游戏手柄按钮 A
KEYCODE_BUTTON_B 游戏手柄按钮 B
KEYCODE_BUTTON_C 游戏手柄按钮 C
KEYCODE_BUTTON_X 游戏手柄按钮 X
KEYCODE_BUTTON_Y 游戏手柄按钮 Y
KEYCODE_BUTTON_Z 游戏手柄按钮 Z
KEYCODE_BUTTON_L1 游戏手柄按钮 L1
KEYCODE_BUTTON_L2 游戏手柄按钮 L2
KEYCODE_BUTTON_R1 游戏手柄按钮 R1
KEYCODE_BUTTON_R2 游戏手柄按钮 R2
KEYCODE_BUTTON_MODE 游戏手柄按钮 Mode
KEYCODE_BUTTON_SELECT 游戏手柄按钮 Select
KEYCODE_BUTTON_START 游戏手柄按钮 Start
KEYCODE_BUTTON_THUMBL Left Thumb Button
KEYCODE_BUTTON_THUMBR Right Thumb Button


 

待查

 


 

KEYCODE_NUM

按键Number modifier

KEYCODE_INFO

按键Info

KEYCODE_APP_SWITCH

按键App switch

KEYCODE_BOOKMARK

按键Bookmark

KEYCODE_AVR_INPUT

按键A/V Receiver input

KEYCODE_AVR_POWER

按键A/V Receiver power

KEYCODE_CAPTIONS

按键Toggle captions

KEYCODE_CHANNEL_DOWN

按键Channel down

KEYCODE_CHANNEL_UP

按键Channel up

KEYCODE_CLEAR

按键Clear

KEYCODE_DVR

按键DVR

KEYCODE_ENVELOPE

按键Envelope special function

KEYCODE_EXPLORER

按键Explorer special function

KEYCODE_FORWARD

按键Forward

KEYCODE_FORWARD_DEL

按键Forward Delete

KEYCODE_FUNCTION

按键Function modifier

KEYCODE_GUIDE

按键Guide

KEYCODE_HEADSETHOOK

按键Headset Hook

KEYCODE_META_LEFT

按键Left Meta modifier

KEYCODE_META_RIGHT

按键Right Meta modifier

KEYCODE_PICTSYMBOLS

按键Picture Symbols modifier

KEYCODE_PROG_BLUE

按键Blue “programmable”

KEYCODE_PROG_GREEN

按键Green “programmable”

KEYCODE_PROG_RED

按键Red “programmable”

KEYCODE_PROG_YELLOW

按键Yellow “programmable”

KEYCODE_SETTINGS

按键Settings

KEYCODE_SOFT_LEFT

按键Soft Left

KEYCODE_SOFT_RIGHT

按键Soft Right

KEYCODE_STB_INPUT

按键Set-top-box input

KEYCODE_STB_POWER

按键Set-top-box power

KEYCODE_SWITCH_CHARSET

按键Switch Charset modifier

KEYCODE_SYM

按键Symbol modifier

KEYCODE_SYSRQ

按键System Request / Print Screen

KEYCODE_TV

按键TV

KEYCODE_TV_INPUT

按键TV input

KEYCODE_TV_POWER

按键TV power

KEYCODE_WINDOW

按键Window

KEYCODE_UNKNOWN

未知按键

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值