Skip to main content
 首页 » 编程设计

Android输入系统Linux input子系统代码分析与调试

2022年07月19日50over140

一、代码分析

TODO

二、DEBUG方法汇总

1. getevent

直接使用 getevent 以数值的形式显示,不直观。后面显示的数值依次是 input_handler.event 回调中的 type code value 字段。

# getevent 
/dev/input/event2: 0003 0039 000001de //type code value,3:EV_ABS 
/dev/input/event2: 0001 014a 00000001 //1:EV_KEY, 014a: BTN_TOUCH, 1: 按下 
/dev/input/event2: 0000 0000 00000000 //0:EV_SYN, 对应 input_sync-->input_event(dev, EV_SYN, SYN_REPORT, 0)

# getevent -lt 会以字符串的形式显示事件

# getevent -lt 
按键 
[    3545.977259] /dev/input/event1: EV_KEY       KEY_POWER            DOWN 
[    3545.977259] /dev/input/event1: EV_SYN       SYN_REPORT           00000000 
[    3546.102923] /dev/input/event1: EV_KEY       KEY_POWER            UP 
[    3546.102923] /dev/input/event1: EV_SYN       SYN_REPORT           00000000 
点击: 
[    3552.165411] /dev/input/event2: EV_ABS       ABS_MT_TRACKING_ID   000001e6 
[    3552.165411] /dev/input/event2: EV_KEY       BTN_TOUCH            DOWN 
[    3552.165411] /dev/input/event2: EV_ABS       ABS_MT_PRESSURE      00000009 
[    3552.165411] /dev/input/event2: EV_ABS       ABS_MT_POSITION_X    000011ba 
[    3552.165411] /dev/input/event2: EV_ABS       ABS_MT_POSITION_Y    00003a0d 
[    3552.165411] /dev/input/event2: EV_SYN       SYN_REPORT           00000000
# getevent -ltr 
[    7330.067579] /dev/input/event2: EV_SYN       SYN_REPORT           00000000             rate 121 //报点率 
[    7330.075422] /dev/input/event2: EV_ABS       ABS_MT_POSITION_X    00000bdf 
[    7330.075422] /dev/input/event2: EV_ABS       ABS_MT_POSITION_Y    0000142d 
[    7330.075422] /dev/input/event2: EV_SYN       SYN_REPORT           00000000             rate 127 //报点率

2. /proc/bus/input/devices

会列出系统中所有输入设备的信息

# cat /proc/bus/input/devices 
I: Bus=0019 Vendor=0000 Product=0000 Version=0000 
N: Name="mtk-kpd" 
P: Phys= 
S: Sysfs=/devices/platform/soc/1c00e000.kp/input/input0 
U: Uniq= 
H: Handlers=event0 //若还有别的handle会显示在这里,可用于看匹配创建了哪些handle。 
B: PROP=0 
B: EV=3 
B: KEY=4000000000000 0 
 
...

3. /proc/bus/input/handlers

显示系统中所有handler的名字

# cat /proc/bus/input/handlers 
N: Number=0 Name=leds 
N: Number=1 Name=evdev Minor=64

4. /sys/class/input 目录

显示是否是平台设备、外设接口、地址、和event的对应关系

# ls /sys/class/input -l 
lrwxrwxrwx 1 root root 0 2022-01-01 03:12 event0 -> ../../devices/platform/soc/1c00e000.kp/input/input0/event0 
lrwxrwxrwx 1 root root 0 2022-01-01 03:12 event1 -> ../../devices/platform/1c804000.spmi/spmi-0/0-04/mtk-pmic-keys/input/input1/event1 
...

优秀博文:

Android输入系统(2)——input驱动分析(Multi-Touch,配置文件)


本文参考链接:https://www.cnblogs.com/hellokitty2/p/16069274.html