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的输入系统去获取事件 ...
随机推荐
- IaaS SaaS PaaS区别
- 201403-1 相反数 Java
法1:排序后,首尾两个指针 法2:每个数的绝对值如果出现过,flag置为1,如果再次出现,就计数+1 本文采用法1 import java.util.Arrays; import java.util. ...
- PAT Advanced 1078 Hashing (25) [Hash ⼆次⽅探查法]
题目 The task of this problem is simple: insert a sequence of distinct positive integers into a hash t ...
- caffe不同lr_policy参数设置方法
fixed 参数: base_lr: 0.01 lr_policy: "fixed" max_iter: 400000 step 参数: base_lr: 0.01 lr_poli ...
- mysql超大sql导入(10G)
mysql 大数据库文件上传(10G) phpstudy2017 环境 mysql 5.5.53 php 5.5.45 更改php.ini memory_limit 为 2048M php.i ...
- Django内置标签
在Django中也提供了大量Django自带的内置标签来供我们使用.标签的写法与过滤器的写法不同,标签是具有开始和结束的,例如:{% if %}为开始标签,{% endif %}为结束标签. 可以查 ...
- 学习spring第二天
Spring第二天笔记 1. 使用注解配置Spring入门 1.1. 说在前面 学习基于注解的IoC配置,大家脑海里首先得有一个认知,即注解配置和xml配置要实现的功能都是一样的,都是要降低程序间的耦 ...
- 嵌入式开发为什么选择C语言作为开发语言?
了解嵌入式开发的朋友们都非常的清楚其核心的开发语言为C语言,C语言在嵌入式开发的过程中占有十分重要的地位,可以说两者之间“你中有我,我中有你”.但是有很多人会想,有那么多的开发语言为什么会单单的选择C ...
- 吴裕雄--天生自然python TensorFlow图片数据处理:解决TensorFlow2.0 module ‘tensorflow’ has no attribute ‘python_io’
tf.python_io出错 TensorFlow 2.0 中使用 Python_io 暂时使用如下指令: tf.compat.v1.python_io.TFRecordWriter(filename ...
- 元组(tuple)的用途(基础)
>>>a = 123,456,'jia',['jia','xiang'] >>>a (123, 456, 'jia', ['jia', 'xiang']) 这个带括 ...