第一次写的第一篇博客,如下:


1、在DCT tool keypad list 文件中添加新键,如TRIGGER键:

KEY_TRIGGER

源码路径:alps/kernel-3.18/tools/dct/old_dct/Keypad_YuSu.cmp

alps/vendor/mediatek/proprietary/bootable/bootloader/lk/scripts/dct/old_dct/Keypad_YuSu.cmp

alps/vendor/mediatek/proprietary/bootable/bootloader/preloader/tools/dct/old_dct/Keypad_YuSu.cmp

2、打开DCT tool 在keypad矩阵中在相应定义的按键位中添加新按键,如TRIGGER键,然后保存,具体如何配置需与硬件沟通

3、增加keypad layout文件键盘映射,linux和android key映射

源码路径:alps/device/magcomm/magc6755_66t_m/keypad_matrix.kl

如:

key 114   TRIGGER_LEFT

key 115   TRIGGER_RIGHT

其中114 是linux键码,TRIGGER_LEFT是android识别key值。

4、修改frameworks识别keycode

源码路径:alps/frameworks/native/include/android/keycodes.h

在按键定义项增加:

AKEYCODE_TRIGGER_LEFT = 307,
        AKEYCODE_TRIGGER_RIGHT = 308,

源码路径:alps/frameworks/native/include/input/InputEventLabels.h

在KEYCODES结构体后面增加:

DEFINE_KEYCODE(TRIGGER_LEFT),
        DEFINE_KEYCODE(TRIGGER_RIGHT),

5、修改frameworks键盘事件

源码路径:alps/frameworks/base/core/java/android/view/KeyEvent.java
在public class KeyEvent extends InputEvent implements Parcelable里增加:
        public static final int KEYCODE_TRIGGER_LEFT = 307;
        public static final int KEYCODE_TRIGGER_RIGHT = 308;
增加按键为唤醒键:
    public static final boolean isWakeKey(int keyCode) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_BACK:
            case KeyEvent.KEYCODE_MENU:
            case KeyEvent.KEYCODE_WAKEUP:
            case KeyEvent.KEYCODE_PAIRING:
            case KeyEvent.KEYCODE_TRIGGER:
            case KeyEvent.KEYCODE_TRIGGER_LEFT:
            case KeyEvent.KEYCODE_TRIGGER_RIGHT:
                return true;
        }
        return false;
    }
增加按键为系统按键:
    public static final boolean isSystemKey(int keyCode) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_MENU:
            case KeyEvent.KEYCODE_SOFT_RIGHT:
            case KeyEvent.KEYCODE_HOME:
            case KeyEvent.KEYCODE_BACK:
            case KeyEvent.KEYCODE_CALL:
            case KeyEvent.KEYCODE_ENDCALL:
            case KeyEvent.KEYCODE_VOLUME_UP:
            case KeyEvent.KEYCODE_VOLUME_DOWN:
            case KeyEvent.KEYCODE_VOLUME_MUTE:
            case KeyEvent.KEYCODE_MUTE:
            case KeyEvent.KEYCODE_POWER:
            case KeyEvent.KEYCODE_HEADSETHOOK:
            case KeyEvent.KEYCODE_MEDIA_PLAY:
            case KeyEvent.KEYCODE_MEDIA_PAUSE:
            case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
            case KeyEvent.KEYCODE_MEDIA_STOP:
            case KeyEvent.KEYCODE_MEDIA_NEXT:
            case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
            case KeyEvent.KEYCODE_MEDIA_REWIND:
            case KeyEvent.KEYCODE_MEDIA_RECORD:
            case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
            case KeyEvent.KEYCODE_CAMERA:
            case KeyEvent.KEYCODE_FOCUS:
            case KeyEvent.KEYCODE_SEARCH:
            case KeyEvent.KEYCODE_BRIGHTNESS_DOWN:
            case KeyEvent.KEYCODE_BRIGHTNESS_UP:
            case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK:
                return true;
        }
}

6、更新API

修改了Android原有API的 ,需要update frameworks/base/api/current.txt,否则编译被中断并出现编译错误提示,可以通过make update-api命令自动更新此文件,检查确认正确后跟修改的代码一起提交即可:
可以看到在
alps/frameworks/base/api/current.txt
alps/frameworks/base/api/system-current.txt内增加了如下代码:
field public static final int KEYCODE_TRIGGER_LEFT = 307; // 0x133
field public static final int KEYCODE_TRIGGER_RIGHT = 308; // 0x134

7、增加测试验证log在android

源码路径:alps/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
在interceptKeyBeforeDispatching()增加
if(keycode== KeyEvent.KEYCODE_TRIGGER_LEFT){
        log.d(TAG, "interceptKeyTi KEYCODE_TRIGGER_LEFT);

}

基于MTK6755平台(Android6.0)添加新按键相关推荐

  1. 在Eclipse中导入编译MTK平台Android6.0源码的原生Gallery2应用

    源码下载地址 由于工作的需要,需要在Eclipse中调试MTK平台Android6.0的原生Gallery2应用, 网上已经有很多类似的技术文章了,步骤都差不多, 但是MTK在google原生的Gal ...

  2. 基于Samsung平台CM11.0编译ROM及刷机全过程

    如果你想自己编译CM11.0,如果你想刷第三方ROM,那么我将在这篇文章带你一起探讨.也许这篇文章有点偏向与纯技术方面的经验,但对于大家对android编译原理及刷机还是很有帮助的.对于刷机教程那块网 ...

  3. android 按键kl文件,Android添加新按键

    1.前言 在Android开发中可能会遇到添加新的按键的需求,本文将简单介绍如何在Android系统中完成一个新的按键的添加. 当系统有新的按键需要添加时,Linux内核下的键码到Android系统中 ...

  4. master节点重置后添加node报错_企业实战(23)基于Docker平台的Jenkins添加node节点与报错详解(2)...

    相关文章  企业实战(23)基于Docker平台部署Jenkins中国定制版(1) 添加node节点前配置 在这里插入图片描述 在这里插入图片描述 开始添加node节点 在这里插入图片描述 在这里插入 ...

  5. android 4.4 红外,RTK2969平台android4.4添加新红外遥控器(一)

    一直以来都没有一个好的习惯,学过的东西用过之后不久就忘记了,最近决定开始把之前遇到的一些问题写到这里,一方面是自己备忘,另一方面也希望能够帮助到大家,起码给各位有一点参考的价值,吾心足矣,废话少说今天 ...

  6. MySQL8.0添加新用户并授予远程访问权限

    MySQL8.0添加用户并授权远程访问 Win10安装MySQL8.0的详细步骤可以看我的博客内容 MySQL8.0添加用户并授权远程访问 详细步骤: [1].打开cmd界面,输入mysql -u r ...

  7. Android6.0添加usb转网口

    Android6.0正常上网方法有两种: 开机前如果插着网线,在开机过程中会识别到usb设备,自动启动网络服务,配置dns并使用dhcpcd eth0 实现android层的上网 在启动后插入网线,需 ...

  8. RAID 0 添加新磁盘

    1:查看当前可用挂载磁盘 lsblk 2:可见 sda 与 sdb 已被挂载,需要挂载 sdc 和 sdd 由于硬盘的默认分区格式是MBR,这种格式的硬盘支持的最大挂载容量为2T,为了满足我们的要求, ...

  9. RK3229平台Android6.0系统添加广升OTA升级功能

    添加脚本: build/core/FotaInfo.sh #!/bin/bash#********Do not modify this file. If you want modify this fi ...

最新文章

  1. 卷积神经网络如何处理一维时间序列数据?
  2. 爱了!安利一个相见恨晚的可视化学习网站
  3. 409 Longest Palindrome
  4. 单片机实现环形队列_单片机模块化程序: 难道有环形队列串口发送数据就万事大吉了吗...
  5. Python version 2.7 required, which was not found in the registry
  6. php5.5 集成环境,windows下配置php5.5开发环境及开发扩展_PHP
  7. 云文件共享将为安全团队带来新的难题
  8. ADO.NET 完整修改、删除、防字符串攻击
  9. Bailian2756 二叉树(POJ NOI0306-1758)【二叉树】
  10. 台式计算机键盘驱动,提示检测到不兼容的键盘驱动程序怎么解决 教你几个步骤轻松修复...
  11. ldoce6 android,少儿英语学习词典 朗文当代LDOCE6双解词典
  12. 上海,夜访大一女生宿舍,满足。
  13. R 包 rgl 安装失败, 报错 X11 not found but required, configure aborted 及解决方法
  14. 使用PRSice进行多基因风险评分分析
  15. 盘点2016年人工智能与深度学习领域的十大收购
  16. 第六章:个人主页和头像
  17. 厄米高斯模式与拉盖尔高斯模式
  18. 虚拟服务器添加用户白名单,apache配置黑名单和白名单及账户权限控制
  19. 海康威视插件播放视频流
  20. SAP MDG和SAP MDM的区别

热门文章

  1. 白领刷脸族串红 人脸识别产品热销
  2. Improving Multiple Object Tracking with Single Object Tracking
  3. 脚本 hive 删除掉分区
  4. pythonML学习笔记ch2-perceptron
  5. OSError: cannot write mode F as BMP
  6. BAAI 2020 北京智源大会 | 邢波 | A Blueprint of Standardized and Composable Machine Learning
  7. 用CSS做出写轮眼变化图
  8. 【剧情】あかね色に染まる坂(染成茜色的坂道) 中文剧情简介
  9. 三百六十行,行行出状元,不知道自己适合做什么,怎么办?
  10. 怕远程办公不安全?大企业同款神器,网络加速、防护、上网管理