IMS:键盘鼠标接入判断
InputManager.InputDeviceListener
可以输出查看:inputDevice.toString()
frameworks\base\core\java\android\view\InputDevice.java
B.O.M 包含 SOURCE_KEYBOARD、SOURCE_MOUSE
Magic Mouse 2 包含SOURCE_KEYBOARD、SOURCE_MOUSE、SOURCE_JOYSTICK
这个本来分别鼠标,不能通过单一SOURCE_*
判断,但是查看Android代码也没有明确区分鼠标,所以先排除全尺寸键盘、手柄
- 键盘判断
- 手柄判断:同时满足SOURCE_JOYSTICK、SOURCE_GAMEPAD
EventHub添加外界设备
在IMS:InputReader线程获取输入事件中addDeviceLocked
添加设备
frameworks\native\services\inputflinger\reader\EventHub.cpp
frameworks\native\services\inputflinger\reader\InputReader.cpp
Log日志输出
frameworks\native\services\inputflinger\reader\include\EventHub.h
frameworks\native\include\android\input.h
frameworks\base\core\java\android\view\InputDevice.java
classes和sources码相关转换标识,input.h
和InputDevice.java
相对应的
计算sources对应含义
name | sources | SOURCE_* | 是否是对应含义 |
---|---|---|---|
Moko-atic Keyboard | 0x00000101 | SOURCE_KEYBOARD = 0x00000101 | 0x00000101 是,相等 |
Moko-atic Keyboard | 0x00000101 | SOURCE_GAMEPAD = 0x00000401 | 0x1 不是,不相等 |
Moko-atic Keyboard | 0x00000101 | SOURCE_MOUSE = 0x00002002 | 0 不是,不相等 |
Moko-atic Keyboard | 0x00000101 | SOURCE_JOYSTICK = 0x01000010 | 0 不是,不相等 |
MI Mouse BT3.0 | 0x00002002 | SOURCE_KEYBOARD = 0x00000101 | 0 不是,不相等 |
MI Mouse BT3.0 | 0x00002002 | SOURCE_GAMEPAD = 0x00000401 | 0 不是,不相等 |
MI Mouse BT3.0 | 0x00002002 | SOURCE_MOUSE = 0x00002002 | 0x00002002 是,相等 |
MI Mouse BT3.0 | 0x00002002 | SOURCE_JOYSTICK = 0x01000010 | 0 不是,不相等 |
(上面这两个就很标准,不需要额外判断,B.O.M、Magic Mouse 2不同时包含多个)
dumpsys input信息,查看Moko-atic Keyboard的KeyboardType也是KEYBOARD_TYPE_ALPHABETIC