android monkey命令学习与脚本制作

来源:互联网 发布:费根鲍姆常数 知乎 编辑:程序博客网 时间:2024/06/05 23:08

简单命令:

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


 

控制键


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


 

组合键


 KEYCODE_ALT_LEFTAlt+LeftKEYCODE_ALT_RIGHTAlt+RightKEYCODE_CTRL_LEFTControl+LeftKEYCODE_CTRL_RIGHTControl+RightKEYCODE_SHIFT_LEFTShift+LeftKEYCODE_SHIFT_RIGHTShift+Right


 

基本

 KEYCODE_0按键'0'7KEYCODE_1按键'1'8KEYCODE_2按键'2'9KEYCODE_3按键'3'10KEYCODE_4按键'4'11KEYCODE_5按键'5'12KEYCODE_6按键'6'13KEYCODE_7按键'7'14KEYCODE_8按键'8'15KEYCODE_9按键'9'16KEYCODE_A按键'A'29KEYCODE_B按键'B'30KEYCODE_C按键'C'31KEYCODE_D按键'D'32KEYCODE_E按键'E'33KEYCODE_F按键'F'34KEYCODE_G按键'G'35KEYCODE_H按键'H'36KEYCODE_I按键'I'37KEYCODE_J按键'J'38KEYCODE_K按键'K'39KEYCODE_L按键'L'40KEYCODE_M按键'M'41KEYCODE_N按键'N'42KEYCODE_O按键'O'43KEYCODE_P按键'P'44KEYCODE_Q按键'Q'45KEYCODE_R按键'R'46KEYCODE_S按键'S'47KEYCODE_T按键'T'48KEYCODE_U按键'U'49KEYCODE_V按键'V'50KEYCODE_W按键'W'51KEYCODE_X按键'X'52KEYCODE_Y按键'Y'53KEYCODE_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按键F1KEYCODE_F2按键F2KEYCODE_F3按键F3KEYCODE_F4按键F4KEYCODE_F5按键F5KEYCODE_F6按键F6KEYCODE_F7按键F7KEYCODE_F8按键F8KEYCODE_F9按键F9KEYCODE_F10按键F10KEYCODE_F11按键F11KEYCODE_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通用游戏手柄按钮#1KEYCODE_BUTTON_2通用游戏手柄按钮 #2KEYCODE_BUTTON_3通用游戏手柄按钮 #3KEYCODE_BUTTON_4通用游戏手柄按钮 #4KEYCODE_BUTTON_5通用游戏手柄按钮 #5KEYCODE_BUTTON_6通用游戏手柄按钮 #6KEYCODE_BUTTON_7通用游戏手柄按钮 #7KEYCODE_BUTTON_8通用游戏手柄按钮 #8KEYCODE_BUTTON_9通用游戏手柄按钮 #9KEYCODE_BUTTON_10通用游戏手柄按钮 #10KEYCODE_BUTTON_11通用游戏手柄按钮 #11KEYCODE_BUTTON_12通用游戏手柄按钮 #12KEYCODE_BUTTON_13通用游戏手柄按钮 #13KEYCODE_BUTTON_14通用游戏手柄按钮 #14KEYCODE_BUTTON_15通用游戏手柄按钮 #15KEYCODE_BUTTON_16通用游戏手柄按钮 #16KEYCODE_BUTTON_A游戏手柄按钮 AKEYCODE_BUTTON_B游戏手柄按钮 BKEYCODE_BUTTON_C游戏手柄按钮 CKEYCODE_BUTTON_X游戏手柄按钮 XKEYCODE_BUTTON_Y游戏手柄按钮 YKEYCODE_BUTTON_Z游戏手柄按钮 ZKEYCODE_BUTTON_L1游戏手柄按钮 L1KEYCODE_BUTTON_L2游戏手柄按钮 L2KEYCODE_BUTTON_R1游戏手柄按钮 R1KEYCODE_BUTTON_R2游戏手柄按钮 R2KEYCODE_BUTTON_MODE游戏手柄按钮 ModeKEYCODE_BUTTON_SELECT游戏手柄按钮 SelectKEYCODE_BUTTON_START游戏手柄按钮 StartKEYCODE_BUTTON_THUMBLLeft Thumb ButtonKEYCODE_BUTTON_THUMBRRight 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

未知按键

原创粉丝点击