【转】Android-Input Getevent
https://source.android.com/devices/input/getevent
Getevent
getevent 工具可在设备上运行,并可提供关于输入设备和内核输入事件的实时转储的信息。
此工具非常实用,可确保设备驱动程序报告各个输入设备的一系列预期功能并生成输入事件的所需信息流。
显示设备功能
使用带有 adb 命令的 -p 选项来查看设备报告的所有键和轴。
adb shell su -- getevent -p
以下示例列出了特定键盘所支持的 Linux 键码和其他事件。
name: "Motorola Bluetooth Wireless Keyboard"
events:
KEY (0001): 0001 0002 0003 0004 0005 0006 0007 0008
0009 000a 000b 000c 000d 000e 000f 0010
0011 0012 0013 0014 0015 0016 0017 0018
0019 001a 001b 001c 001d 001e 001f 0020
0021 0022 0023 0024 0025 0026 0027 0028
0029 002a 002b 002c 002d 002e 002f 0030
0031 0032 0033 0034 0035 0036 0037 0038
0039 003a 003b 003c 003d 003e 003f 0040
0041 0042 0043 0044 0045 0046 0047 0048
0049 004a 004b 004c 004d 004e 004f 0050
0051 0052 0053 0055 0056 0057 0058 0059
005a 005b 005c 005d 005e 005f 0060 0061
0062 0063 0064 0066 0067 0068 0069 006a
006b 006c 006d 006e 006f 0071 0072 0073
0074 0075 0077 0079 007a 007b 007c 007d
007e 007f 0080 0081 0082 0083 0084 0085
0086 0087 0088 0089 008a 008c 008e 0090
0096 0098 009b 009c 009e 009f 00a1 00a3
00a4 00a5 00a6 00ab 00ac 00ad 00b0 00b1
00b2 00b3 00b4 00b7 00b8 00b9 00ba 00bb
00bc 00bd 00be 00bf 00c0 00c1 00c2 00d9
00f0 0110 0111 0112 01ba
REL (0002): 0000 0001 0008
ABS (0003): 0028 : value 223, min 0, max 255, fuzz 0, flat 0, resolution 0
0029 : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
002a : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
002b : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
MSC (0004): 0004
LED (0011): 0000 0001 0002 0003 0004
input props:
<none>
使用 -i 选项可获取更多信息,包括 HID 映射表和调试信息。
使用 -l 选项可显示所有事件代码的文字标签。
adb shell su -- getevent -lp /dev/input/event1
示例:
name: "Melfas MMSxxx Touchscreen"
events:
ABS (0003): ABS_MT_SLOT : value 0, min 0, max 9, fuzz 0, flat 0, resolution 0
ABS_MT_TOUCH_MAJOR : value 0, min 0, max 30, fuzz 0, flat 0, resolution 0
ABS_MT_POSITION_X : value 0, min 0, max 720, fuzz 0, flat 0, resolution 0
ABS_MT_POSITION_Y : value 0, min 0, max 1280, fuzz 0, flat 0, resolution 0
ABS_MT_TRACKING_ID : value 0, min 0, max 65535, fuzz 0, flat 0, resolution 0
ABS_MT_PRESSURE : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
input props:
INPUT_PROP_DIRECT
显示实时事件
以下示例显示了使用 Linux 多点触控输入协议“B”的触摸屏的双指多点触控手势。-l 选项可显示文字标签,而 -t 选项则可显示时间戳。
adb shell su -- getevent -lt /dev/input/event1
示例:
[ 78826.389007] EV_ABS ABS_MT_TRACKING_ID 0000001f
[ 78826.389038] EV_ABS ABS_MT_PRESSURE 000000ab
[ 78826.389038] EV_ABS ABS_MT_POSITION_X 000000ab
[ 78826.389068] EV_ABS ABS_MT_POSITION_Y 0000025b
[ 78826.389068] EV_ABS ABS_MT_SLOT 00000001
[ 78826.389068] EV_ABS ABS_MT_TRACKING_ID 00000020
[ 78826.389068] EV_ABS ABS_MT_PRESSURE 000000b9
[ 78826.389099] EV_ABS ABS_MT_POSITION_X 0000019e
[ 78826.389099] EV_ABS ABS_MT_POSITION_Y 00000361
[ 78826.389099] EV_SYN SYN_REPORT 00000000
[ 78826.468688] EV_ABS ABS_MT_SLOT 00000000
[ 78826.468688] EV_ABS ABS_MT_TRACKING_ID ffffffff
[ 78826.468719] EV_ABS ABS_MT_SLOT 00000001
[ 78826.468719] EV_ABS ABS_MT_TRACKING_ID ffffffff
[ 78826.468719] EV_SYN SYN_REPORT 00000000
注意:getevent 时间戳采用 CLOCK_MONOTONIC 时基,并使用 $SECONDS.$MICROSECONDS 格式。有关详情,请参阅 getevent.c。
验证按键映射工具
Android 框架有一个名为 validatekeymaps 的小工具,用于验证输入设备配置文件、按键布局文件、按键字符映射文件和虚拟按键定义文件的语法。
编译
要编译 validatekeymaps,请设置开发环境,下载 Android 源代码树,对其进行编译,然后运行以下命令:
mmm frameworks/base/tools/validatekeymaps
该命令应该会将一个名为 validatekeymaps 的主机工具编译到 out/host/<os>/bin 目录中。
使用
如果您通过运行 envsetup.sh 设置了开发环境,那么 validatekeymaps 工具应当已经位于您的路径中。您可以通过运行 validatekeymaps 进行验证。
validatekeymaps
您应该会看到以下输出内容:
Keymap Validation Tool Usage:
validatekeymaps [*.kl] [*.kcm] [*.idc] [virtualkeys.*] [...]
Validates the specified key layouts, key character maps,
input device configurations, or virtual key definitions.
然后,您只需运行 validatekeymaps,并为其提供一个或多个要进行验证的文件的路径。
validatekeymaps frameworks/base/data/keyboards/Generic.kl
示例:
Validating file 'frameworks/base/data/keyboards/Generic.kl'...
No errors. Success.
如果出现错误…
validatekeymaps Bad.kl
示例:
Validating file 'Bad.kl'...
E/KeyLayoutMap(87688): Bad.kl:24: Expected keyword, got 'ke'.
Error -22 parsing key layout file. Failed!
自动化
最好先对所有配置文件运行 validatekeymaps,然后再将这些文件安装到设备中。
通过使用脚本或 makefile,该过程可以作为编译系统的一部分轻松地自动执行。
以下示例 Makefile 基于 frameworks/base/data/keyboards/Android.mk 的内容。
# This makefile performs build time validation of framework keymap files. LOCAL_PATH := $(call my-dir) # Validate all key maps.
include $(CLEAR_VARS) validatekeymaps := $(HOST_OUT_EXECUTABLES)/validatekeymaps$(HOST_EXECUTABLE_SUFFIX)
files := MyKeyboard.kl MyKeyboard.kcm MyTouchScreen.idc LOCAL_MODULE := validate_framework_keymaps
LOCAL_MODULE_TAGS := optional
LOCAL_REQUIRED_MODULES := validatekeymaps validate_framework_keymaps: $(files)
$(hide) $(validatekeymaps) $(files) include $(BUILD_PHONY_PACKAGE)
【转】Android-Input Getevent的更多相关文章
- Linux/Android——Input系统之frameworks层InputManagerService (六)【转】
本文转载自:http://blog.csdn.net/u013491946/article/details/72638954 版权声明:免责声明: 本人在此发文(包括但不限于汉字.拼音.拉丁字母)均为 ...
- input系统——android input系统
AndroidInput系统--JNI NativeInputManager InputManger InputReader AndroidInput系统--InputReader AndroidIn ...
- 关于Appium android input manager for Unicode 提示信息
Appium调完输入法后,会弹出 Appium android input manager for Unicode 提示信息相关的提示信息,每次运行如此,如下图 网络上查找一遍,基本解决了,只要在设 ...
- Linux/Android——Input系统之InputMapper 处理 (八)【转】
本文转载自:http://blog.csdn.net/jscese/article/details/43561773 前文Linux/Android——Input系统之InputReader (七)介 ...
- Linux/Android——Input系统之InputReader (七)【转】
本文转载自:http://blog.csdn.net/jscese/article/details/42739197 在前文Linux/Android——Input系统之frameworks层Inpu ...
- Linux/Android——input系统之 kernel层 与 frameworks层交互 (五)【转】
本文转载自:http://blog.csdn.net/jscese/article/details/42291149 之前的四篇博文记录的都是linux中的input体系相关的东西,最底层以我调试的u ...
- Android sendevent/getevent 用法
前言:最近在弄一个模拟用户点击屏幕的功能,并且不需要用户点击屏幕,后台自动给输入框赋值,类似pc端按键精灵的功能,在网上找了很多人的资料,写的都不是太详细,一知半解.还要自己慢慢研究.于是我这边写一篇 ...
- Android Input设备debug技巧
一.驱动层 检查是否有点上报 adb shell getevent -l /dev/input/eventX 检查input设备支持的属性值 adb shell getevent -i /dev/in ...
- Linux/Android——input子系统核心 (三)【转】
本文转载自:http://blog.csdn.net/jscese/article/details/42123673 之前的博客有涉及到linux的input子系统,这里学习记录一下input模块. ...
- Android input输入框 移动页面input手机键盘中的“搜索”按键
动页面input手机键盘中的“搜索”按键 满足以下几点机即可: input type="search" 放到form标签中 使用action属性 <form ac ...
随机推荐
- 创建springboot项目
springboot 就是为简化spring的创建 配置 部署 运行 而创建的. springboot 直接引入依赖jar包 就行了,无须配置xml 一 创建springboot 1.创建一个mave ...
- Codeforces Round #129 (Div. 1)E. Little Elephant and Strings
题意:有n个串,询问每个串有多少子串在n个串中出现了至少k次. 题解:sam,每个节点开一个set维护该节点的字符串有哪几个串,启发式合并set,然后在sam上走一遍该串,对于每个可行的串,所有的fa ...
- Vue2全家桶之二:vue-router(路由)详细教程,看这个就够了
作者:东西里本文转载于:https://www.jianshu.com/p/514c7588e877来源:简书 转载仅供自己日后看方便. 由于Vue在开发时对路由支持的不足,于是官方补充了vue- ...
- 利用Python进行数据分析(第二版)电子版书籍分享
资料下载地址: 链接:https://pan.baidu.com/s/1y1C0bJPkSn7Sv6Eq9G5_Ug 提取码:vscu <利用Python进行数据分析(第二版)>高清中文版 ...
- docker容器自动化部署(一)
1.docker容器暴露多个端口 To expose just one port, this is what you need to do: docker run -p <host_port&g ...
- 20175212 《Java程序设计》第2周学习总结
学号 20175212 <Java程序设计>第2周学习总结 教材学习内容总结 1.数据类型 此节介绍的数据类型与C中常用的相比仅多了Boolean(逻辑类型).byte(取值范围:[-12 ...
- JAVA 把小数分成整数和小数
在进行进制转换的时候,我们需要把小数分为整数和小数两部分. 这里介绍两种方法. 第一种举个例子:1.23分为1 和 0.23 第二种:1.23 分为 1 和23 有时需要具体情况具体分析自己需要哪种类 ...
- day_45_Django
day45 内容回顾 #### 1. HTTP协议 tcp/IP协议 HTTP特性: 无连接 请求--响应模式 请求格式 响应格式 Django相关 Django下载 命令行: pip install ...
- Win10优化:这8个操作简单的小方法让你的Win10系统更加流畅
目前,市场上比较流行的主流电脑系统无非就是win7和win10这两个,这两个也是比较稳定的.但是自从微软发布将于2020年停止对win7支持后,很多小伙伴也表示无奈之下得升win10了啊. win10 ...
- vs2017 重新生成报错 MSB4057 BuildDependsOn DependsOnTargets ContainerPrepareForLaunch 解决办法
环境: win10 vs2017 .net core 删除引用的包: Microsoft.VisualStudio.Azure.Containers.Tools.Targets