MTK6735+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
MTK6735+Android之按键(key)修改相关推荐
- MTK6735 android 驱动修改模块
MTK6735 android 驱动修改模块 bootable目录 #if 1 /* long press reset settings are moved to default.mak and cu ...
- Android手机按键不灵,手机按键不灵怎么办 手机按键修改教程【详细步骤】
智能手机用久了,总会出现一点小毛病,而很多安卓手机用户都遇到了按键不灵的情况.手机按键的设置不同手机的作用都是不一样的,安卓手机越来越多用户对于这手机设置的要求也是越来越多,下面就一起来看看这手机按键 ...
- android 原生按键事件触发
在项目中遇到了这样的问题,系统层修改了android原生逻辑,按键事件有mcu直接上报,没有走android原生的事件分发流程,因此不会触发onKeyDown/onKeyUp方法的回调,可以使用如下方 ...
- 怎么看android底层源码,Android 底层按键获取
与用户交互的输入设备(触摸屏,键盘等)是获取用户意图的来源.由于硬件本身的物理特性及由各大硬件厂商的标准不一,这将导致我们从设备上获取到的键值存在一定的差异性,为了让系统能够正确处理用户的操作,我们就 ...
- Android:Socket客户端开发,Android 的Socket客户端优化,Android非UI线程修改控件程序崩溃的问题
一.Android:Socket客户端开发 创建一个工程 我们要做的是按下按键之后,去往服务器 (服务器) 或者我们自己写的服务器 ,给他发送一些预定好的东西 然后打开操作界面 然后修改一下 你要发送 ...
- Android学习按键事件监听与Command模式
Android学习按键事件监听与Command模式 - Dufresne - 博客园 Android学习按键事件监听与Command模式 一 Command模式 意图: 将一个请求封装为一个对象,从而 ...
- android tv ko,Android TV 键值修改流程
有的时候,我们需要增加一些新的按键,那么需要修改哪些地方呢? 1.Java层的修改:KeyEvent.java 修改了keyevent.java需要编译出android.policy.jar这个需要拷 ...
- 安卓系统按键映射修改
安卓系统按键映射修改 谨记录下靠着自己摸索,安卓平板使用时一个bug的解决方案,及修改按钮功能的方法.这个bug目前搜不到解决方案,能独立解决还是很有成就感的 解决反复打开谷歌语音搜索的bug 手里一 ...
- STM8学习笔记---按键KEY
用按键来控制LED灯的亮灭.按键接在PC4口,LED灯接在PD4口,LED灯由IO口高低电平控制亮灭,所以对于LED来说,IO口为输出口.按键是由外部电路来决定高低电平,假设按键未按下时默认为高电平, ...
最新文章
- java多语言标签如何动态刷新_WPF实现无刷新动态切换多语言(国际化)
- [远航笔记流水账]易大漠多线程初级教程086(1-3)
- 这么奇葩搞笑的代码注释你见过吗
- 悟空php微信复制的东西在哪找,微信收藏的文件在哪?从哪里能看到?
- Visual Studio 2008中的jQuery Intellisense
- Python中修饰器的定义与使用
- 初识公有云--公有云的相关概念
- Linux下与github建立ssh连接
- MongoDB(一)——简介
- C# 自定义网格 dataGridView 禁止编辑 + 禁止自动生成新列 + 禁止生成新行 + 禁止删除行 + 禁止多选 + 禁止行选中 + 禁止改变列宽度 行高度
- Linux制作软盘镜像
- 奕东电子深交所上市:市值115亿 小米产业基金是股东
- 漫漫的webim(一) web实现简易im功能
- .NET跨平台:在CentOS上编译dnx并运行ASP.NET 5示例程序
- wait-ify工作原理(学习笔记)
- shell的几个重要命令,主要参数,循环语句以及变量处理
- 蚂蚁金服收购Kakao,完善移动金融布局
- 【mmaction2 slowfast 行为分析(商用级别)】总目录
- BLE_CC2540_初学者入门指导
- PPv3-OCR自定义数据从训练到部署