(用华为P30带你看安卓)
简介:华为P30,Android 9.0(API 28)
如果你在从事安卓的开发,如果你苦于看不懂android 的输入逻辑,如果你想找到更好Android 调试工具,那么强烈建议你看完本文。如果你那么做了,你会了解dumpsys input ,你会了解 input事件的派发逻辑,你会对Android 更感兴趣;
HWELE:/ $ dumpsys input
INPUT MANAGER (dumpsys input)
Input Manager State:
Interactive: true //该值会随着powerManager的唤醒状态而改变;开机使能,关机不使能
//enum {
// ASYSTEM_UI_VISIBILITY_STATUS_BAR_VISIBLE = 0,
// ASYSTEM_UI_VISIBILITY_STATUS_BAR_HIDDEN = 0x00000001,
//};
System UI Visibility: 0x8008 //系统UI的可见性
Pointer Speed: 0 //指针速度
Pointer Gestures Enabled: true //如果为真,指针手势启用,
Show Touches: false //Show touches feature enable/disable.开发者选项->显示触摸操作(可设置)
Pointer Capture Enabled: false
Event Hub State:
BuiltInKeyboardId: 5 //内置键盘: 不存在为-2 ,存在为 真实(fingerprint)的Id 号
Devices:
-1: Virtual //虚拟键盘设备属于合成输入设备,其 ID 为 -1,见KeyCharacterMap.VIRTUAL_KEYBOARD,
Classes: 0x40000023 //类型,virtual(0x40000000)/implies keyboard, has DPAD keys(0x00000020)/(0x00000001|0x00000002)等特征
Path: <virtual> //路径
Enabled: true //是否有效
Descriptor: a718a782d34bc767f4689c232d64d527998ea7fd //该值通过sha1函数获取的唯一标识, SHA1一般指SHA-1。SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数;标识唯一
Location:
ControllerNumber: 0
UniqueId: <virtual>
Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000
/**
*1. 按键布局文件(.kl 文件)将 Linux 按键代码和坐标轴代码映射到 Android 按键代码和坐标轴代码,并指定相关的策略标记
* a. 对具有按键(包括音量、电源和耳机媒体按键等特殊按键)的内部(内置)输入设备而言是必要文件。
* b. 对其他输入设备而言是可选文件,而对特殊用途的键盘和操纵杆而言则是推荐文件。
* c. 如果没有可用的设备专属按键布局文件,则系统将改选默认文件。
*2. 按键布局文件: 将input event报的键值转换成具体键盘对应的按键供android上层使用,时通过键盘布局文件(*.kl)完成转换的。
*/
KeyLayoutFile: /system/usr/keylayout/Generic.kl
/**
*1.按键字符映射文件: 按键字符映射文件(.kcm 文件)负责将 Android 按键代码与修饰符的组合映射到 Unicode 字符。系统会提供一个名为 Virtual.kcm 的特殊内置按键字符映射文件,供虚拟键盘设备使用。
* a.如果只是告诉系统该设备仅用于特殊用途(非全键盘),那么对于具有按键的所有内部(内置)输入设备,特定于设备的按键布局文件必不可少。
* b.对于外部键盘,特定于设备的按键布局文件为可选项,并且通常根本不需要。系统会提供适用于许多外部键盘的通用按键字符映射。
* c.如果没有提供特定于设备的按键布局文件,系统将选择默认按键布局文件。
**/
KeyCharacterMapFile: /system/usr/keychars/Virtual.kcm
ConfigurationFile:
HaveKeyboardLayoutOverlay: false //有键盘布局叠加
1: minibugreport_key //设备名称
Classes: 0x00000001 // 输入设备是一个键盘或有按钮。
Path: /dev/input/event3 //对应的设备文件, InputReader读取数据的位置
Enabled: true
Descriptor: eb10f7ba25ce47c71082081ca1c09748fdc6fb11
Location:
ControllerNumber: 0
UniqueId:
Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000
KeyLayoutFile: /system/usr/keylayout/Generic.kl
KeyCharacterMapFile: /system/usr/keychars/Generic.kcm //系统会提供一个名为 Generic.kcm 的特殊内置按键字符映射文件。此按键字符映射旨在支持各种标准外部键盘。
ConfigurationFile:
HaveKeyboardLayoutOverlay: false
2: soundtrigger_input_dev
Classes: 0x00000001
Path: /dev/input/event0
Enabled: true
Descriptor: 1cc715cbd334804aa45aa5df0419a5338477dc2b
Location:
ControllerNumber: 0
UniqueId:
Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000
KeyLayoutFile: /system/usr/keylayout/Generic.kl
KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
ConfigurationFile:
HaveKeyboardLayoutOverlay: false
3: input_mt_wrapper
Classes: 0x00000015
Path: /dev/input/event5
Enabled: true
Descriptor: a988c03908bee014d81671ffdd909090304130b5
Location:
ControllerNumber: 0
UniqueId:
Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000
KeyLayoutFile: /system/usr/keylayout/Generic.kl
KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
ConfigurationFile:
HaveKeyboardLayoutOverlay: false
4: hisi_on
Classes: 0x00000001
Path: /dev/input/event2
Enabled: true
Descriptor: 0b8880f3bfb9b8911feb1902fa64f3914ea4e084
Location: hisi_on/input0
ControllerNumber: 0
UniqueId:
Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000
KeyLayoutFile: /system/usr/keylayout/Generic.kl
KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
ConfigurationFile:
HaveKeyboardLayoutOverlay: false
5: fingerprint (aka device 0 - built-in keyboard)
Classes: 0x00000001
Path: /dev/input/event4
Enabled: true
Descriptor: 94605cc6d11050165b0e47ce7d8b3046d370abd5
Location:
ControllerNumber: 0
UniqueId:
Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000
KeyLayoutFile: /system/usr/keylayout/fingerprint.kl
KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
ConfigurationFile: /system/usr/idc/fingerprint.idc
HaveKeyboardLayoutOverlay: false
7: hisi_gpio_key
Classes: 0x00000001
Path: /dev/input/event1
Enabled: true
Descriptor: 2ffdd6a1bf8a4cbe7b5de5f4d03609f3340c4c76
Location:
ControllerNumber: 0
UniqueId:
Identifier: bus=0x0019, vendor=0x0000, product=0x0000, version=0x0000
KeyLayoutFile: /system/usr/keylayout/Generic.kl
KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
ConfigurationFile:
HaveKeyboardLayoutOverlay: false
16777222: hi3xxx_hi6405_card Headset Jack
Classes: 0x00000081
Path: /dev/input/event6
Enabled: true
Descriptor: 668df2f6c2189282c84c109d8682c797ca11b41c
Location: ALSA
ControllerNumber: 0
UniqueId:
Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000
KeyLayoutFile: /system/usr/keylayout/Generic.kl
KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
ConfigurationFile:
HaveKeyboardLayoutOverlay: false
Input Reader State:
Device -1: Virtual
Generation: 2
IsExternal: false //一般情况为false
HasMic: false //有麦克风:false
Sources: 0x00000301 //AINPUT_SOURCE_KEYBOARD | AINPUT_SOURCE_DPAD (keyboard | dpad)
KeyboardType: 2 //带字母的键盘
Keyboard Input Mapper:
Parameters:
HasAssociatedDisplay: false //无相关显示
OrientationAware: false //偏向:false
HandlesKeyRepeat: false //处理键重复: false
KeyboardType: 2
Orientation: 0 //显示偏向0度,正常显示(四种情况,0度,90度,180度 270度)
KeyDowns: 0 keys currently down //该输入设备当前没有任何按键输入
MetaState: 0x0 //当前是否有组合键特殊按键
DownTime: 0
Device 0: fingerprint //指纹识别设备
Generation: 8
IsExternal: false
HasMic: false
Sources: 0x00000101 //属于带按键的设备
KeyboardType: 1 //不带字母的按键键盘
Keyboard Input Mapper:
Parameters:
HasAssociatedDisplay: true //存在相关显示
OrientationAware: true //偏向识别:true
HandlesKeyRepeat: false
KeyboardType: 1 //不带字母的按键
Orientation: 0
KeyDowns: 0 keys currently down
MetaState: 0x0
DownTime: 0
Device 1: minibugreport_key //某种特殊的按键设备
Generation: 16
IsExternal: false
HasMic: false
Sources: 0x00000101 //带按键
KeyboardType: 1 //不带字母的按键
Keyboard Input Mapper:
Parameters:
HasAssociatedDisplay: false
OrientationAware: false
HandlesKeyRepeat: false
KeyboardType: 1
Orientation: 0
KeyDowns: 0 keys currently down
MetaState: 0x0
DownTime: 0
Device 2: soundtrigger_input_dev
Generation: 14
IsExternal: false
HasMic: false
Sources: 0x00000101
KeyboardType: 1
Keyboard Input Mapper:
Parameters:
HasAssociatedDisplay: false
OrientationAware: false
HandlesKeyRepeat: false
KeyboardType: 1
Orientation: 0
KeyDowns: 0 keys currently down
MetaState: 0x0
DownTime: 0
Device 3: input_mt_wrapper //触屏设备:
Generation: 317
IsExternal: false
HasMic: false
Sources: 0x00001103 (AINPUT_SOURCE_TOUCHSCREEN:0x00001002 | AINPUT_SOURCE_KEYBOARD: 0x00000101) 触屏加按键,按键可以理解屏幕底部的: 返回键,主页建和运行软件后台程序
KeyboardType: 1 //不带字母按键
Motion Ranges:
X: source=0x00001002, min=0.000, max=1079.000, flat=0.000, fuzz=0.000, resolution=0.000
Y: source=0x00001002, min=0.000, max=2339.000, flat=0.000, fuzz=0.000, resolution=0.000
PRESSURE: source=0x00001002, min=0.000, max=1.000, flat=0.000, fuzz=0.000, resolution=0.000
SIZE: source=0x00001002, min=0.000, max=1.000, flat=0.000, fuzz=0.000, resolution=0.000
TOUCH_MAJOR: source=0x00001002, min=0.000, max=2577.208, flat=0.000, fuzz=0.000, resolution=0.000
TOUCH_MINOR: source=0x00001002, min=0.000, max=2577.208, flat=0.000, fuzz=0.000, resolution=0.000
TOOL_MAJOR: source=0x00001002, min=0.</