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

MTK6735+Android之按键(key)修改相关推荐

  1. MTK6735 android 驱动修改模块

    MTK6735 android 驱动修改模块 bootable目录 #if 1 /* long press reset settings are moved to default.mak and cu ...

  2. Android手机按键不灵,手机按键不灵怎么办 手机按键修改教程【详细步骤】

    智能手机用久了,总会出现一点小毛病,而很多安卓手机用户都遇到了按键不灵的情况.手机按键的设置不同手机的作用都是不一样的,安卓手机越来越多用户对于这手机设置的要求也是越来越多,下面就一起来看看这手机按键 ...

  3. android 原生按键事件触发

    在项目中遇到了这样的问题,系统层修改了android原生逻辑,按键事件有mcu直接上报,没有走android原生的事件分发流程,因此不会触发onKeyDown/onKeyUp方法的回调,可以使用如下方 ...

  4. 怎么看android底层源码,Android 底层按键获取

    与用户交互的输入设备(触摸屏,键盘等)是获取用户意图的来源.由于硬件本身的物理特性及由各大硬件厂商的标准不一,这将导致我们从设备上获取到的键值存在一定的差异性,为了让系统能够正确处理用户的操作,我们就 ...

  5. Android:Socket客户端开发,Android 的Socket客户端优化,Android非UI线程修改控件程序崩溃的问题

    一.Android:Socket客户端开发 创建一个工程 我们要做的是按下按键之后,去往服务器 (服务器) 或者我们自己写的服务器 ,给他发送一些预定好的东西 然后打开操作界面 然后修改一下 你要发送 ...

  6. Android学习按键事件监听与Command模式

    Android学习按键事件监听与Command模式 - Dufresne - 博客园 Android学习按键事件监听与Command模式 一 Command模式 意图: 将一个请求封装为一个对象,从而 ...

  7. android tv ko,Android TV 键值修改流程

    有的时候,我们需要增加一些新的按键,那么需要修改哪些地方呢? 1.Java层的修改:KeyEvent.java 修改了keyevent.java需要编译出android.policy.jar这个需要拷 ...

  8. 安卓系统按键映射修改

    安卓系统按键映射修改 谨记录下靠着自己摸索,安卓平板使用时一个bug的解决方案,及修改按钮功能的方法.这个bug目前搜不到解决方案,能独立解决还是很有成就感的 解决反复打开谷歌语音搜索的bug 手里一 ...

  9. STM8学习笔记---按键KEY

    用按键来控制LED灯的亮灭.按键接在PC4口,LED灯接在PD4口,LED灯由IO口高低电平控制亮灭,所以对于LED来说,IO口为输出口.按键是由外部电路来决定高低电平,假设按键未按下时默认为高电平, ...

最新文章

  1. java多语言标签如何动态刷新_WPF实现无刷新动态切换多语言(国际化)
  2. [远航笔记流水账]易大漠多线程初级教程086(1-3)
  3. 这么奇葩搞笑的代码注释你见过吗
  4. 悟空php微信复制的东西在哪找,微信收藏的文件在哪?从哪里能看到?
  5. Visual Studio 2008中的jQuery Intellisense
  6. Python中修饰器的定义与使用
  7. 初识公有云--公有云的相关概念
  8. Linux下与github建立ssh连接
  9. MongoDB(一)——简介
  10. C# 自定义网格 dataGridView 禁止编辑 + 禁止自动生成新列 + 禁止生成新行 + 禁止删除行 + 禁止多选 + 禁止行选中 + 禁止改变列宽度 行高度
  11. Linux制作软盘镜像
  12. 奕东电子深交所上市:市值115亿 小米产业基金是股东
  13. 漫漫的webim(一) web实现简易im功能
  14. .NET跨平台:在CentOS上编译dnx并运行ASP.NET 5示例程序
  15. wait-ify工作原理(学习笔记)
  16. shell的几个重要命令,主要参数,循环语句以及变量处理
  17. 蚂蚁金服收购Kakao,完善移动金融布局
  18. 【mmaction2 slowfast 行为分析(商用级别)】总目录
  19. BLE_CC2540_初学者入门指导
  20. PPv3-OCR自定义数据从训练到部署

热门文章

  1. 【微信小程序遇到的坑】微信支付
  2. Excel公式中的countif 和 conutifs 和sumproduct
  3. Word文档无响应现象(转)
  4. 无水印的电脑录屏软件,推荐这3款软件,2023年新版
  5. Android反编译修改apk并重新打包
  6. newelm函数详解及Elman神经网络数据预测实例
  7. TTL与CMOS的区别
  8. 计算机论文提纲怎么写,计算机论文提纲
  9. pyhon扫雷演示与讲解
  10. 五款功能强大的国产软件,常常被误认为是外国人开发的