Android中按键事件传递分析

Ongoing,待完成,Please wait.

Framework Native模块代码

1
2
3
4
5
6
7
frameworks/base/services/core/jni/
├── com_android_server_input_InputManagerService.cpp
├── com_android_server_input_InputApplicationHandle.h
├── com_android_server_input_InputApplicationHandle.c
├── com_android_server_input_InputWindowHandle.h
├── com_android_server_input_InputWindowHandle.c
└──
1
2
3
frameworks/native/include/android
├── input.h
└── keycodes.h
1
2
3
4
5
6
7
8
9
10
11
12
13
frameworks/native/include/input
├── DisplayViewport.h
├── IInputFlinger.h
├── InputDevice.h
├── InputEventLabels.h
├── Input.h
├── InputTransport.h
├── Keyboard.h
├── KeyCharacterMap.h
├── KeyLayoutMap.h
├── VelocityControl.h
├── VelocityTracker.h
└── VirtualKeyMap.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
frameworks/native/services/inputflinger
├── Android.bp
├── EventHub.cpp
├── EventHub.h
├── host
│   ├── Android.bp
│   ├── InputDriver.cpp
│   ├── InputDriver.h
│   ├── InputFlinger.cpp
│   ├── InputFlinger.h
│   ├── inputflinger.rc
│   ├── InputHost.cpp
│   ├── InputHost.h
│   └── main.cpp
├── InputApplication.cpp
├── InputApplication.h
├── InputDispatcher.cpp
├── InputDispatcher.h
├── InputListener.cpp
├── InputListener.h
├── InputManager.cpp
├── InputManager.h
├── InputReader.cpp
├── InputReader.h
├── InputWindow.cpp
├── InputWindow.h
├── PointerControllerInterface.h
└── tests
├── Android.bp
├── InputDispatcher_test.cpp
└── InputReader_test.cpp

参考文献

[1095/1219] including ./vendor/qcom/proprietary/diag/Android.mk …
build/core/binary.mk:1522: error: vendor/qcom/proprietary/diag/diag_ep/Android.mk: diag_ep: C_INCLUDES must be under the source or output directories: /diag/diag_ep /diag/include /diag/src.

用户态

这两篇文章关注了很多的代码细节:
Android按键事件传递流程(一)
Android按键事件传递流程(二)

将Native层的Input子系统,起到承上启下的功能.连接Kernel 和 Fwk
Android Framework——之Input子系统

内核态
Android物理按键输入事件(一)
Android物理输入事件(二)
android kl 文件的作用

View机制深入学习(三) View中的消息传递及InputManagerService