这里添加新的键值,不是毫无凭据凭空创造的一个键值,而是根据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. git 常见问题

    RPC failed; error: RPC failed; curl 56 SSL read: error:00000000:lib(0):func(0):reason(0), er rno 100 ...

  2. Self-Host Web API 学习笔记

    ASP.NET Web API 不需要 IIS,直接使用控制台程序可以实现. 一.创建一个新的控制台程序,项目名为 HostApi 二.设置目标框架为.NET Framework 4 三.NuGet添 ...

  3. try{}、catch(){}、throw语句

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

  4. windows 系统时钟

    偶然发现了一个函数用以查询操作系统的时钟间隔: BOOL WINAPI GetSystemTimeAdjustment( _Out_ PDWORD lpTimeAdjustment, _Out_ PD ...

  5. C# 接口笔记

    /* 1. 实现多态的两种方式.             *    使用虚方法实现多态.             *    使用抽象方法实现多态.             *              ...

  6. 解决界面有搜索栏时,点击TableView的空白界面,键盘不消失的问题

    UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(h ...

  7. Python学习【第七篇】基本数据类型

    基本数据类型 数字 2是一个整数的例子. 长整数 不过是大一些的整数. 3.23和52.3E-4是浮点数的例子,E标记表示10的幂.在这里,52.3E-4表示52.3*10-4. (-5+4j)和(2 ...

  8. DataTables样式

    Styling 官方链接 AdminLTE HTML代码 <div class="row"> <div class="col-xs-12"&g ...

  9. Java基础——基本类型和包装类、基本类型和字符串之间的转换

    基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更 ...

  10. IOS要用到的东西

    code4app.com 这网站不错,收集各种 iOS App 开发可以用到的代码示例 cocoacontrols.com/ 英文版本的lib收集 objclibs.com/ 精品lib的收集网站 h ...