Android的键盘事件处理
来源:互联网 发布:宁波淘宝客服招聘 编辑:程序博客网 时间:2024/05/17 01:54
1. 基本流程
1) 内核处理按键,通过设备文件的方式提供给framework层
2) framework层的KeyInputQueue.java启动线程从设备文件中读出键码,然后把读出的键码按kl文件转成相应键值(JNI调用EventHub.cpp),最后写入事件队列
3) framework层的WindowManagerService.java启动线程从事件队列中读出键值,然后根据当前focus分发给相应窗口
4) UI通过KeyCharacterMap.java处理kcm规则将用户基本按键与功能键(Shift, Alt等)组合,得出最终按键
2. 两个配置文件
通常更换一种新的硬件,可能其键盘布局及键码与标准版本不同,不用更改代码,只要修改以下配置文件即可(如果增加新的未定义功能的按键,则需要修改代码)
1) xxx.kl
a) 位置
development/emulator/keymaps/*.kl (1.6版本模拟器使用)
sdk/emulator/keymaps/*.kl (2.2版本模拟器使用)
vendor/xxx/xxx/*.kl (特定硬件专用kl)
b) 功能
硬件全键盘的键码与键值的对应规则文件(如0x21对应A)
2) xxx.kcm
a) 位置
development/emulator/keymaps/*.kcm (1.6版本模拟器使用)
sdk/emulator/keymaps/*.kcm (2.2版本模拟器使用)
vendor/xxx/xxx/*.kcm (特定硬件专用kcm)
b) 功能
硬件全键盘的键值对应表(如按下Alt, Shift时按键对应的键值)
3. 相关代码
1) frameworks/base/core/java/android/view/KeyEvent.java (按键事件定义)
2) frameworks/base/services/java/com/android/server/KeyInputQueue.java (事件读取线程)
3) frameworks/base/services/java/com/android/server/WindowManagerService.java(事件分发线程)
4) frameworks/base/core/java/android/view/KeyCharacterMap.java (功能键转换kcm)
5) frameworks/base/libs/ui/EventHub.cpp (键码与键值转换)
4. 参考
1) http://www.armfans.net/archiver/tid-2671.html
2) http://www.armfans.net/viewthread.php?tid=2671
- Android的键盘事件处理
- Android的键盘事件处理
- Android处理键盘事件的小例子
- Android事件处理之处理键盘事件
- Android 键盘事件处理过程
- Android键盘事件处理流程
- android的frameworks层键盘事件处理流程分析
- Android的frameworks层键盘事件处理流程分析
- Android的frameworks层键盘事件处理流程分析
- android的frameworks层键盘事件处理流程分析
- android的frameworks层键盘事件处理流程分析
- Android的frameworks层键盘事件处理流程分析
- Android的frameworks层键盘事件处理流程分析
- android的frameworks层键盘事件处理流程分析
- android的frameworks层键盘事件处理流程分析
- android的frameworks层键盘事件处理流程分析
- Android的frameworks层键盘事件处理流程分析
- Android的frameworks层键盘事件处理流程分析
- android典型应用之gps
- DNG资源汇总
- android典型用户之多媒体播放
- A CUDA Support Vector Machine Implementation 利用GPU的CUDA改进支持向量机SVM
- 11月29日 工作总结(ASP.NET代码收藏)
- Android的键盘事件处理
- CRC16
- CSDN在线讲堂-》玩转C指针 学习笔记
- 11月29日 工作总结(ASP.NET代码收藏)
- 什么是RIA
- 瑞星软件已更新,重启电脑后方能正常使用。建议您立即重启电脑 解决办法
- 井底之蛙
- Windows CE 5.0 Product Update Rollup, December 31, 2009
- 11月29日 工作总结(ASP.NET代码收藏)