这里添加新的键值,不是毫无凭据凭空创造的一个键值,而是根据kernel中检测到的按键值,然后转化为Android所需要的数值:

以添加一个Linux键值为217,把它映射为android的键值Browser(这个键值之前不存在)为例介绍一下:

1、android之前没有这个键值,需要定义

则是linux键值

那么,BROWSER不能无缘无故就使用,必然有定义位置,这个位置就是KeycodeLabels.h

static const KeycodeLabel KEYCODES[] = {

……

{ "CALCULATOR", 210 },

{"BROWSER",     211}, 是android键值

{ NULL,           0}

}

在EventHub.cpp中加载并解析这个map:atc260x-irkeypad.kl,那么得到的是linux键值217为key的string,这个string就是BROWSER,有了上面这个KEYCODES数组,就可以获得它对应的android键值了。

5、external/webkit/WebKit/android/plugins/ANPKeyCodes.h

enum ANPKeyCodes {

……

kAppSwitch_ANPKeyCode = 186,

kBrowser_ANPKEYCODE    = 211,

};

6、frameworks/base/core/res/res/values/attrs.xml

<attr name="keycode">

<enum name="KEYCODE_CALCULATOR" value="210" />

<enum name="KEYCODE_BROWSER" value="211" />

</attr>

7、/frameworks/base/core/java/android/view/KeyEvent.java

LAST_KEYCODE也就是最后一个keycode,因为添加了新的,所以需要更改这个的数值

LAST_KEYCODE = KEYCODE_BROWSER

private static final

SparseArray<String> KEYCODE_SYMBOLIC_NAMES = new SparseArray<String>();

private static void populateKeycodeSymbolicNames() {

……

names.append(KEYCODE_MUSIC, "KEYCODE_MUSIC");

names.append(KEYCODE_CALCULATOR, "KEYCODE_CALCULATOR");

names.append(KEYCODE_BROWSER, "KEYCODE_BROWSER");

}

这些操作完成了之后,就完成了linux键到android的键值映射。也就是android中多了一个KEYCODE_BROWSER它的值是211.


//////////////////////////////android 4.3 添加新键值//////////////////////////////

root@ubuntu:/data/work/rD016_Softwarelower/frameworks# ack-grep KEYCODE_RESET_WIFI
base/libs/androidfw/Input.cpp
116:        case AKEYCODE_RESET_WIFI:
base/core/res/res/values/attrs.xml
1554:        <enum name="KEYCODE_RESET_WIFI" value="223" />
base/core/java/android/view/KeyEvent.java
635:    public static final int KEYCODE_RESET_WIFI      = 223;
637:    private static final int LAST_KEYCODE           = KEYCODE_RESET_WIFI;
882:        names.append(KEYCODE_RESET_WIFI, "KEYCODE_RESET_WIFI");
native/include/android/keycodes.h
269:    AKEYCODE_RESET_WIFI      = 223,

///////////////////////////////////////////////////////////////////////////////

Android4.0 添加一个新的Android 键值的更多相关文章

  1. RK平台Android4.4 添加一个新的遥控器支持以及添加特殊按键【转】

    本文转载自:http://blog.csdn.net/coding__madman/article/details/52904063 版权声明:本文为博主原创文章,未经博主允许不得转载. 瑞芯微平台 ...

  2. js为一个对象Object添加一个新的属性和值

    1, var obj = {}; //或者 var obj=new Object(); var key = "name"; var value = "张三丰" ...

  3. Android下添加新的自定义键值和按键处理流程

            Android下添加新的自定义键值和按键处理流程     说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我 ...

  4. Android下添加新的自定义键值和按键处理流程【转】

    本文转载自: Android下添加新的自定义键值和按键处理流程     说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我一 ...

  5. Flink资料(6) -- 如何添加一个新的Operator

    false false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-n ...

  6. 012.Adding a New Field --【添加一个新字段】

    Adding a New Field 添加一个新字段 2016-10-14 3 分钟阅读时长 作者 By Rick Anderson In this section you'll use Entity ...

  7. Linux 在添加一个新账号后却没有权限怎么办

    当添加一个新账号后,我们可能会发现新账号sudo 时会报告不在sudoers中,使用su -s时输入密码后也会认证失败 上网搜索大部分都要求修改/etc/sudoers中的内容,但修改这个文件必须需要 ...

  8. Mysql学习(一)添加一个新的用户并用golang操作Mysql

    Mysql添加一个新的用户并赋予权限 添加一个自己的用户到mysql 首先我们需要先用root用户登录mysql,但是刚安装完没有密码,我们先跳过密码 ailumiyana@ailumiyana:~/ ...

  9. 一个新的Android Studio 2.3.3可以在稳定的频道中使用。A new Android Studio 2.3.3 is available in the stable channel.

    作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313134555 @qq.com 一个新的Android Studio 2.3 ...

随机推荐

  1. 【转】c#处理3种json数据的实例

    http://www.jb51.net/article/48027.htm http://json2csharp.chahuo.com/ 网络中数据传输经常是xml或者json,现在做的一个项目之前调 ...

  2. POST流方式接受数据方法

    /** * 流方式接收数据 * @param $url * @param $jsonFile * @return bool */private static function sendStreamJs ...

  3. 使用sql server 链接服务器

    在我们的日常应用场景中经常会碰访问不同服务器上的数据库,即跨服务器访问操作不同的服务器上的SQL Sever数据库, 这个时候Sql Server的链接服务器就非常实用,创建SQL语句如下: --重新 ...

  4. iOS推送遇到的问题

    1. 推送证书过期. 同事说iOS客户端不能推送消息,发现推送证书过期了,苹果的推送证书有效期是一年,推送证书过期后就不能使用推送服务了.解决办法:重新请求推送证书,导出p12文件,传给后台服务器就可 ...

  5. iOS程序中的内存分配 栈区堆区全局区

    在计算机系统中,运行的应用程序的数据都是保存在内存中的,不同类型的数据,保存的内存区域不同.一.内存分区 栈区(stack) 由编译器自动分配并释放,存放函数的参数值,局部变量等.栈是系统数据结构,对 ...

  6. python 3.5 关于sys问题总结

    想把自己写的模组直接调用的时候,使用这个sys.path.append(): 但是总是报错(图1): 解决方案,去掉前面的from public; 解决思路: 1.sys.path.append(&q ...

  7. linux基础

    用户管理: id:可以查看当前用户 whoami:查看当前的用户 who:看当前已经登录的用户  w:也可以看 添加用户:useradd name 添加用户组: useradd -g groupnam ...

  8. Linux环境安装Eclipse及配置hadoop插件

    摘要:第一次使用hadoop,另外eclipse也不太熟悉,所以把自己在安装过程中得琐碎记录下来.以备以后查看. 硬软件环境: ▪ 虚拟机: VMware Workstation 11.0.0 bui ...

  9. 点餐系统Sprint2总结

    Sprint1结束后休息了两天,就开始准备Sprint2.一开始就知道数据库的连接对我们来说都是大难题. 虽然使用sqlite3,与android连接起来比较容易,但还是不容忽视.为期10天,和Spr ...

  10. SD卡读写一些函数

    /SPI2 读写一个字节 //TxData:要写入的字节 //返回值:读取到的字节 u8 SPI2_ReadWriteByte(u8 TxData) { u16 retry=0;   while((S ...