TP----Android系统移植之按键驱动篇
来源:互联网 发布:mac上怎么安装office 编辑:程序博客网 时间:2024/04/30 22:08
Android系统移植之按键驱动篇
Android按键的处理是Window Manager负责,主要的映射转换实现在android源代码frameworks/base/libs/ui/EventHub.cpp此文件处理来自底层的所有输入事件,并根据来源对事件进行分类处理,对于按键事件,它首先记录驱动名称,再获取环境变量ANDROID_ROOT为系统路径,默认是/system,定义在android源代码/system/core/rootdir/init.rc文件中。然后查找路径为"系统路径/usr/keylayout/驱动名称.kl"的按键映射文件,如果不存在则默认用路径为"系统路径/usr/keylayout/qwerty.kl"。这个默认的按键映射文件,映射完成后再把经映射得到的android按键码值发给上层应用程序。所以我们可以在内核中定义多个按键设备,然后为每个设备设定不同的按键映射文件,不定义则会默认用qwerty.kl。
有了上面的分析,我们不难发现,上述更改是不可能有效果的,只能越改越不能用。相反,如果仅仅只需要更改某个按键的功能,根本就不用改内核,只需重新定义android系统的gpio-keys.kl即可。
进android系统后找到该文件,
可以发现,在在gpio-keys.kl和qwerty.kl两个文件,因此a ndroid系统会从gpio-keys.kl中查找键值进行映射。里面内容如下:
key 102 HOME WAKE
key 158 BACK WAKE
这不正是开发板上android的两个功能键吗?对于第三个POWER键,是用于开关机的,不属android功能键范畴,因此无须映射。
修改按键功能有两种方法:
方法一:直接修改gpio-keys.kl文件的内容,比如我们想将BACK键改成右键,我们只需做如下修改:
key 102 HOME WAKE
key 106 DPAD_RIGHT WAKE
注意上面的106以及按键名称,都是从qwerty.kl里面找的,千万不要在linux内核的input.h中查找。DPAD_RIGHT不能更改为RIGHT,否则android无法识别。
方法二:修改内核中mx53_loco.c中的数组如下:
static struct gpio_keys_button loco_buttons[] = {
GPIO_BUTTON(MX53_nONKEY,KEY_POWER, 1, "power", 0),
//GPIO_BUTTON(USER_UI1,KEY_BACK, 1, "back", 0),
GPIO_BUTTON(USER_UI2,KEY_HOME, 1, "home", 0),
GPIO_BUTTON(USER_UI1,KEY_RIGHT, 1, "right", 0),//test by lqm.
};
再修改上面的gpio-keys.kl文件,内容如下:
key 102 HOME WAKE
key 106 DPAD_RIGHT WAKE
方法二相比方法一,多了一个步骤,但是推荐采用方法二,这样更容易理解,也不易混淆。
- TP----Android系统移植之按键驱动篇
- android系统移植之按键驱动篇
- android系统移植之按键驱动篇
- android系统移植之按键驱动篇
- android系统移植之按键驱动篇
- android系统移植之按键驱动篇
- android系统移植之按键驱动篇
- android系统移植之按键驱动篇
- android系统移植之iMX53按键驱动篇
- android系统移植之iMX53按键驱动篇 .
- Android系统移植之按键移植
- android系统按键驱动篇
- Android系统移植-按键移植
- 4412按键驱动移植(按键对应Android系统的三个虚拟按键)
- android TP驱动移植调试笔记
- Android系统移植:驱动篇
- MTK TP驱动移植
- Android系统移植(二)-按键移植
- Shell脚本编程学习入门 02
- 防止SQL注入的方法
- Android手机遥控Android机顶盒的Demo
- .net中清除textbox的浏览记录
- 对Spring的IoC和DI最生动的解释
- TP----Android系统移植之按键驱动篇
- Android下DLNA和UPnP的研究以及问题
- GIT基本概念和用法总结
- LeetCode:N-Queens
- Android XML解析学习——Dom方式 .
- 安装事件函数 Pascal 脚本
- Linux中断的顶半部和底半部.
- MYSQL创建存储过程,函数,触发器,索引
- 超级有用的git reset --hard和git revert命令