这里添加新的键值,不是毫无凭据凭空创造的一个键值,而是根据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. CSS基础1

    CSS是层叠样式表(Cascading Style Sheets)的缩写,它有以下优点:①提高页面浏览速度:②缩短改版时间,降低维护费用:③更好的控制页面布局:④实现表现和结构.内容相分离:⑤更方便搜 ...

  2. C# 获取计算机信息

    //C#获取当前计算机的系统信息 //系统标识符和版本号 string strSystem = Environment.OSVersion.ToString(); //获取映射到进程上下文的物理内存量 ...

  3. dragdrop 修改版

    <!DOCTYPE html> <html lang="en"> <head> <meta name="keywords&quo ...

  4. js保留两位小数

    js保留两位小数四舍五入: (Math.floor(until_price*100)/100).toFixed(2);//会四舍五入   保留两位小数 且不四舍五入(三种方式,请用最后一种): var ...

  5. [Python笔记]序列(一)索引、分片

    Python包含6种内建序列:列表.元组.字符串.Unicode字符串.buffer对象.xrange对象. 这些序列支持通用的操作: 索引 索引是从0开始计数:当索引值为负数时,表示从最后一个元素( ...

  6. 好用的Markdown编辑器一览

    Markdown 是一种简单的.轻量级的标记语法.用户可以使用诸如 * # 等简单的标记符号以最小的输入代价生成极富表现力的文档. Markdown具有很多优点: 写作中添加简单符号即完成排版,所见即 ...

  7. imx6 DDR_Stress_Test

    在调试DDR的时候,有时候需要更改参数.今天发现NXP提供了DDR Stress Test工具,用于DDR参数的校准. 参考链接 http://blog.csdn.net/qq405180763/ar ...

  8. ajax交互方法实现

    AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个 ...

  9. mysqldump导出

    mysqldump -u user -p dbname table1 table2 > db.sql mysql执行sql mysql –uroot –p -Dtest < 1.sql

  10. 夺命雷公狗-----React---18--value和defaultValue的区别

    <!DOCTYPE> <html> <head> <meta charset="utf-8"> <title></ ...