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的输入系统去获取事件 ...
随机推荐
- UVA 658 状态压缩+隐式图+优先队列dijstla
不可多得的好题目啊,我看了别人题解才做出来的,这种题目一看就会做的实在是大神啊,而且我看别人博客都看了好久才明白...还是对状态压缩不是很熟练,理解几个位运算用了好久时间.有些题目自己看着别人的题解做 ...
- springboot +Thymeleaf+UEditor整合记录
1,ueditor官网下载:https://ueditor.baidu.com/website/download.html 下载相应的工具包和源码,ps:源码放到工程中 2,解压放到放到项目中,sp ...
- 12)hInstance和hWnd写进子类
1)因为这些变量存在于 WInMaincpp文件中 但是 我想在我的CGameCtrl子类中要用到hInstance实例句柄和hWNd窗口句柄,那么 我就将这些变量在父类CGameCtrl中有一份 ...
- 13)编写一个子类SnakeCtrl来继承基类
1)首先是创建子类SnakeCtrl 2) 添加那个SnakeCtrl子类 3)出来了SnakeCtrl的基本样子 4)简单实现: ①改编那个SnakeCtrl.h中的内容: #pragma ...
- java反射使用详细例子
1. 概念 反射,一种计算机处理方式.是程序可以访问.检测和修改它本身状态或行为的一种能力. 2. 反射机制的作用 通过反机制访问java类的属性,方法,构造方法等: 3.反射机制中的类 (1) ja ...
- python语法基础-并发编程-线程-线程理论和线程的启动
####################### 线程介绍 ############################## """ 线程介绍 为什 ...
- Java之多线程窗口卖票问题(Runnable)
/** * 例子:创建三个窗口卖票,总票数为100张.使用实现Runnable接口的方式 * 存在线程的安全问题,待解决. */class Window1 implements Runnable{ p ...
- c++语法(3)
子类覆盖父类的成员函数: #include "stdafx.h" #include "iostream" class CAnimal { protected: ...
- redhat6.5 升级内核
1.导入key rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 2.安装elrepo的yum源 rpm -Uvh https:// ...
- python,pandas常用函数
一.rename,更改df的列名和行索引 df=pd.DataFrame(np.arange(,).reshape(,)) print(df) print(type(df)) 结果为: <cla ...