monkey详解

简单命令:

adb shell monkey -f /sdcard/Music/monkey.sh -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按键Home3
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_ESCAPEESC键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_TABTab键61
KEYCODE_NUM_LOCK小键盘锁143
KEYCODE_CAPS_LOCK大写锁定键115
KEYCODE_BREAKBreak/Pause键121
KEYCODE_SCROLL_LOCK滚动锁定键116
KEYCODE_ZOOM_IN放大键168
KEYCODE_ZOOM_OUT缩小键169


 

组合键


 
KEYCODE_ALT_LEFTAlt+Left
KEYCODE_ALT_RIGHTAlt+Right
KEYCODE_CTRL_LEFTControl+Left
KEYCODE_CTRL_RIGHTControl+Right
KEYCODE_SHIFT_LEFTShift+Left
KEYCODE_SHIFT_RIGHTShift+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_THUMBLLeft Thumb Button
KEYCODE_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

未知按键

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值