[Android调试基础四]键盘输入调试(输入监听与模拟发送)
来源:互联网 发布:服务器坏了数据怎么办 编辑:程序博客网 时间:2024/05/18 08:47
键盘输入转换原理:
当有按键响应时,USB HID UsageID经过驱动转换为扫描的键值Scancode,android将scancode经配置表(如qwerty.kl)找到keycodelabel,然后由内部表KEYCODES列表找到keycode的数字值,再由keycode的数字值经字符配置表(如qwerty.kcm)找到对应的字符值。
调试方法:
<一> 输入监听
adb shell->使用getevent命令来获取输入设备,并获取输入相应的信息。可以输入getevent -h来查找该命令的用法,
常用如下:
getevent ->监听event
getevent -i -> 打印具体的输入设备信息与键值等。
getevent /dev/input/eventX ->只查看具体event的输入键值
<二> 模拟输入
adb shell ->使用sendevnet命令可以模拟输入设备给eventX发送scancode,模拟按键输入。
如:sendevent /dev/input/eventX 1 116 1 ==>模拟按下开关机键
sendevent /dev/input/eventX 1 116 0 ==>模拟释放开关机键
以上在调试手机平台上ok,但是box上不能响应。因此使用getevent获取某按键按下时的触发事件,发现其发了6个事件,如下:
因此模拟该事件,系统正常响应。
如下:(此时功能为音量减,没有发送释放按键代码,发送后面两个信号事件,即在原来的基础上发送同步信号。只是把1 114 1->1 114 0)
模拟按键是使用sendevent是发送scancode,发送较麻烦,另一种方法是发送keycode的方式,也就是最终的数值来传送,如Home的HID键值为usageID=0x0223,tyep=0xc;转到Linux下的Linux key code在Android上就是scancode,该值为172(0xac),而Android key code的值为0x0003,该值就是Scancode对应的字符经过KEYCODES转换后的值。我们可以使用input keyevent指令测试,如:input keyevent 3 //Home。其中(Android)keycode的转换关系如下:
附录:
- # getevent -h
- Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-p] [-q] [-c count] [-r] [device]
- -t: show time stamps
- -n: don't print newlines
- -s: print switch states for given bits
- -S: print all switch states
- -v: verbosity mask (errs=1, dev=2, name=4, info=8, vers=16, pos. events=32)
- -p: show possible events (errs, dev, name, pos. events)
- -q: quiet (clear verbosity mask)
- -c: print given number of events then exit
- -r: print rate events are received
- [Android调试基础四]键盘输入调试(输入监听与模拟发送)
- 四、配置与调试
- android高仿微信表情输入与键盘输入详解
- android高仿微信表情输入与键盘输入详解
- android高仿微信表情输入与键盘输入详解
- <Android+Java>(四)调试相关
- Android用户输入系统的移植与调试
- 模拟键盘输入和鼠标输入
- android系列:第三篇android调试常用工具:模拟按键输入,修改分辨率,获得按键消息
- GDB 调试(四)
- telnet对server监听的端口发送数据包进行调试
- linux入门基础(四)Gdb调试程序
- 【Python2.7 学习笔记】Python 基础(四)调试
- 串口(调试助手)发送数据——字符串发送与十六进制发送的区别
- android中EditText监听键盘输入
- Android 自定义键盘输入内容监听
- Android 安装与调试
- Android调试与测试
- 观察者模式初次总结(一)
- BCB运行时常见的几个错误
- java小札记
- 有名内部类
- 61条Java面向对象设计的经验原则,成为高级程序员必备
- [Android调试基础四]键盘输入调试(输入监听与模拟发送)
- java 实现双色球随机选一注
- Oracle基础
- [精通WindowsSocket网络开发-基于VC++实现]第一章——准备开发环境
- BOJ 953 flower
- ORACLE常用函数实例
- 基本tcp套接字编程
- [精通WindowsSocket网络开发-基于VC++实现]第二章——TCP/IP简介
- ubuntu安装,软件指南