站酷做网站信息流优化师发展前景
转载自:http://blog.csdn.net/loongembedded/article/details/38982983
MTK6577+Android之按键(key)修改
1. 产品按键布局和定义
 
 
图1
图1括号里面的是android系统采用的键值,注意了,这可不是linux系统里用到的scan code。
2. 按键硬件设计
MTK6577的Keypad分为两部分:
(1) Keypad接口,包括8*8按键和一个专用的power按键。
(2) Key检测块(key detection block),提供按键按下、按键释放和抖动(de-bounce)机制。
按键和对应的行与列关系如下:
|   
  |   KCOL0(GPIO103/EINT30)  |   KCOL1(GPIO108/EINT31)  |   KCOL2  | 
|   KROW0(GPIO98/EINT6)  |   F6(136,右边侧按键)  |   
  |   
  | 
|   KROW1(GPIO97/EINT7)  |   F7(137,左边侧按键)  |   
  |   
  | 
|   KROW2(GPIO95/EINT8)  |   
  |   F10(140,右边按键)  |   
  | 
|   KROW3(GPIO99/EINT9)  |   
  |   F9(139,中间按键)  |   
  | 
|   KROW7(GPIO107/EINT13)  |   
  |   F8(138,左边按键)  |   
  | 
这是我们实际产品的按键定义,在这里,我重新定义,如下所示:
|   
  |   HW keycode  |   Linux keycode  |   Android code  | 
|   右边侧按键  |   9  |   115---KEY_VOLUMEUP  |   24  | 
|   左边侧按键  |   0  |   114---KEY_VOLUMEDOWN  |   25  | 
|   左边按键  |   64  |   105--- KEY_LEFT  |   21  | 
|   中间按键  |   28  |   28--- KEY_ENTER  |   66  | 
|   右边按键  |   19  |   106--- KEY_RIGHT  |   22  | 
3. 按键传递键值的流程
  
图2
4. 修改及编译
MTK6577提供\mediatek\source\dct\DrvGen.exe来配置GPIO设置、中断设置、ADC设置、KEYPAD设置和PMIC设置,打开的文件对应\mediatek\custom\hsimobile77_ics2\kernel\dct\dct\ codegen.dws:
4.1 DrvGen.exe的使用
 
 
图3
图3是在ubuntu系统安装了Wine之后,用Wine打开的。
(1) 打开DrvGen.exe
(2) 选择Open打开codegen.dws
(3) 如果要修改就选择Edit,修改完成之后可选择Gen Code来产生代码,更新的代码位于\mediatek\custom\hsimobile77_ics2\kernel\dct\dct目录下。也可以采用./mk drvgen命令来生成新的对应的代码。
(4) 然后选择Save,再Exit。
4.2 GPIO设置
根据上面表格,需要设置按键对应GPIO引脚的模式,如下图:
 
 
图4
红色矩形框是我新修改的,之前是NC状态,要配置为对应的模式,GPIO修改后对应的头文件是\mediatek\custom\hsimobile77_ics2\kernel\dct\dct\ cust_gpio_boot.h和cust_gpio_usage.h。
4.3 KEYPAD设置
结合上面的表格,知道哪个功能按键对应在哪一行和哪一列,配置如下:
 
 
图5
对应的头文件为\mediatek\custom\hsimobile77_ics2\kernel\dct\dct\ cust_kpd.h。
4.4 设置后生成新的代码
(1) ./mkdrvgren或是点击图3的Gen code
(2) ./mk rk
(3) ./mkbootimage
更新新的boot.img
参考:
MTK Android 之MT6577驱动笔记
http://blog.csdn.net/cbk861110/article/details/9385439
MTK Android Driver:adda new key
http://blog.csdn.net/cbk861110/article/details/19043607
android系统移植之按键驱动篇
http://blog.csdn.net/armeasy/article/details/6713642
android定制化软件修改或添加按键驱动的核心操作步骤讲解
http://linsheng1990526.blog.163.com/blog/static/2038241502012320111925656/
