input系统——android input系统
AndroidInput系统——JNI NativeInputManager InputManger InputReader
AndroidInput系统——InputReader
AndroidInput系统——InputDispatcher
AndroidInput系统——EventHub
Android Input系统相关结构体
1. input_device_id
struct input_device_id {
kernel_ulong_t flags;
__u16 bustype; // BUS_USB BUS_BLUETOOTH
__u16 vendor;
__u16 product;
__u16 version;
kernel_ulong_t evbit[INPUT_DEVICE_ID_EV_MAX / BITS_PER_LONG + 1];
kernel_ulong_t keybit[INPUT_DEVICE_ID_KEY_MAX / BITS_PER_LONG + 1];
kernel_ulong_t relbit[INPUT_DEVICE_ID_REL_MAX / BITS_PER_LONG + 1];
kernel_ulong_t absbit[INPUT_DEVICE_ID_ABS_MAX / BITS_PER_LONG + 1];
kernel_ulong_t mscbit[INPUT_DEVICE_ID_MSC_MAX / BITS_PER_LONG + 1];
kernel_ulong_t ledbit[INPUT_DEVICE_ID_LED_MAX / BITS_PER_LONG + 1];
kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1];
kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1];
kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1];
kernel_ulong_t driver_info;
};
2. input_event (input.h)
struct input_event {
struct timeval time;
__u16 type;
__u16 code;
__s32 value;
};
3. RawEvent (EventHub.h)
struct RawEvent {
nsecs_t when; time
int32_t deviceId; ID = 1 ID = 0
int32_t type; EV_REL= 0x02 EV_SYN = 0x00
int32_t code; REL_X = 0x00 SYN_REPORT = 0
int32_t value; Value = 0x01 Value = 0x00
};
调试相关
查看event注册设备
shell@rk3368_32:/dev/input # cat /proc/bus/input/devices
I: Bus=0000 Vendor=0000 Product=0003 Version=206a
N: Name="synaptics_dsx"
P: Phys=synaptics_dsx/touch_input
S: Sysfs=/devices/ff140000.i2c/i2c-2/2-0020/input/input0
U: Uniq=
H: Handlers=event0 cpufreq ddr_freq
B: PROP=2
B: EV=b
B: KEY=420 0 0 0 0 0 8000 0 0 0 0
B: ABS=2638000 3
I: Bus=0019 Vendor=0000 Product=0000 Version=0000
N: Name="rotary.35"
P: Phys=
S: S 大专栏 input系统——android input系统ysfs=/devices/rotary.35/input/input1
U: Uniq=
H: Handlers=event1
B: PROP=0
B: EV=5
B: REL=1
I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="rk29-keypad"
P: Phys=gpio-keys/input0
S: Sysfs=/devices/ff100000.adc/key.38/input/input2
U: Uniq=
H: Handlers=event2 ddr_freq keychord
B: PROP=0
B: EV=3
B: KEY=8000 100000 0 0 0
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="temperature"
P: Phys=
S: Sysfs=/devices/ff160000.i2c/i2c-4/4-005b/input/input3
U: Uniq=
H: Handlers=event3
B: PROP=0
B: EV=9
B: ABS=40
查看Handler个数
shell@rk3368_box:/dev/input # ls -l
crw-rw---- root input 13, 64 2017-04-12 11:15 event0
crw-rw---- root input 13, 65 2017-04-12 11:15 event1
crw-rw---- root input 13, 66 2017-04-14 08:12 event2
crw-rw---- root input 13, 67 2017-04-14 08:12 event3
cat event0
cat event1
getevent 获取事件
# getevent -h
Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-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, props=64)
-d: show HID descriptor, if available
-p: show possible events (errs, dev, name, pos. events)
-i: show all device info and possible events
-l: label event types and names in plain text
-q: quiet (clear verbosity mask)
-c: print given number of events then exit
-r: print rate events are received
常用命令组合:
getevent -p // see all of the keys and axes a device reports
getevent -ip // get more information, including HID mapping tables and debugging information
getevent -lp // option to display textual labels for all event codes
getevent -lp
getevent -r -q 监控设备的sendevent事件
getevent -p
add device 1: /dev/input/event3
name: "temperature"
add device 2: /dev/input/event1
name: "rotary.35"
add device 3: /dev/input/event0
name: "synaptics_dsx"
add device 4: /dev/input/event2
name: "rk29-keypad"
/dev/input/event1: 0002 0000 00000001 ID=1 EV_REL=0x02 REL_X = 0x00 Value = 0x01
/dev/input/event1: 0000 0000 00000000 ID=0 EV_SYN 0x00 SYN_REPORT = 0 Value = 0x00
/dev/input/event1: 0002 0000 00000001
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0002 0000 00000001
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0002 0000 ffffffff EV_REL=0x02 REL_X = 0x00 Value = 0xffffffffff
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0002 0000 ffffffff
dumpsys
dumpsys input:
To dump the input system’s state (Event Hub State,Input Reader State,Input Dispatcher State)
input系统——android input系统的更多相关文章
- Android权限系统
Android系统为每个应用程序提供了一个安全的运行环境,不同程序间相互隔离,应用程序的数据等私有资源,外界无法访问.这个安全的运行环境由Android的权限系统(可称为沙箱系统)来提供.本文简单记录 ...
- 图解Android - Android GUI 系统 (5) - Android的Event Input System
Android的用户输入处理 Android的用户输入系统获取用户按键(或模拟按键)输入,分发给特定的模块(Framework或应用程序)进行处理,它涉及到以下一些模块: Input Reader: ...
- 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系统之frameworks层InputManagerService (六)【转】
本文转载自:http://blog.csdn.net/u013491946/article/details/72638954 版权声明:免责声明: 本人在此发文(包括但不限于汉字.拼音.拉丁字母)均为 ...
- Linux/Android——input系统之 kernel层 与 frameworks层交互 (五)【转】
本文转载自:http://blog.csdn.net/jscese/article/details/42291149 之前的四篇博文记录的都是linux中的input体系相关的东西,最底层以我调试的u ...
- 图解Android - System Service 概论 和 Android GUI 系统
通过 图解Android - Binder 和 Service 一文中,我们已经分析了Binder 和 Service的工作原理.接下来,我们来简要分析Android 系统里面都有哪些重要的Servi ...
- 图解Android - Android GUI 系统 (2) - 窗口管理 (View, Canvas, Window Manager)
Android 的窗口管理系统 (View, Canvas, WindowManager) 在图解Android - Zygote 和 System Server 启动分析一 文里,我们已经知道And ...
- [Android] 输入系统(一)
Android输入系统是人与机器交互最主要的手段.我们通过按键或者触碰屏幕,会先经由linux产生中断,进行统一的处理过后,转换成Android能识别的事件信息,然后Android的输入系统去获取事件 ...
随机推荐
- 【@ConfigurationProperties注解】Not Found The requested URL /spring-boot/docs/2.2.2.RELEASE/reference/html/configuration-metadata.html was not found on this server.
<!-- 配置文件自动映射 --> <dependency> <groupId>org.springframework.boot</groupId> & ...
- MyBatis从入门到精通(第6章):MyBatis 高级查询->6.1.1高级结果映射之一对一映射
jdk1.8.MyBatis3.4.6.MySQL数据库5.6.45.IntelliJ IDEA 2019.2.4 本章主要包含的内容为 MyBatis 的高级结果映射,主要处理数据库一对一.一对多的 ...
- 01 语言基础+高级:1-10 JDK8新特性_day12【函数式接口】
day12[函数式接口] 主要内容自定义函数式接口函数式编程常用函数式接口 教学目标能够使用@FunctionalInterface注解能够自定义无参无返回函数式接口能够自定义有参有返回函数式接口能够 ...
- UML-交互图包含哪些图?
猫比狗精明,但你无法让8只猫在雪地里拉雪橇---杰夫.瓦尔德斯 本章是重点. 1.总览 2.顺序图 1).类A具有doOne方法和类B的属性 2).doOne方法中调用类B的doTwo()和doThr ...
- C盘满了解决办法之pagefile.sys文件
pagefile.sys文件一般存在于C盘,只有点击了隐藏属性才能看见. 这个文件一般比较大,它是系统创建虚拟内存页面的文件.平时大家使用软件的时候对于产生大量的临时数据,这些数据需要占用大量内存,如 ...
- C++ lock_guard 互斥锁
概述根据对象的析构函数自动调用的原理,c++11推出了std::lock_guard自动释放锁,其原理是:声明一个局部的lock_guard对象,在其构造函数中进行加锁,在其析构函数中进行解锁.最终的 ...
- java 中的小数点、大数、随机数处理
1.小数点处理 public class Test { public static void main(String[] args) { double i = 3.856; // 舍掉小数取整 Sys ...
- [原]how to view custom provider's events(collected without provider registered) by wpa
最近想使用etw作为高效的日志机制,也不想暴露机密信息(关键信息在msnifest文件中).也就是不能在客户机器上注册自己的provider,那需要manifest文件.这样采集回来的.etl文件如果 ...
- mysql统计指定数据库的各表的条数
mysql统计指定数据库的各表的条数 SELECT table_schema,table_name,table_rows,CREATE_TIME FROM TABLES WHERE TABLE_SCH ...
- java中集合,数组,字符串相互转换
数组转List String[] staffs = new String[]{"Tom", "Bob", "Jane"}; List sta ...