1、ir_keyboard.h增加物理键值。http://blog.csdn.net/zvivi521/article/details/9469367
2、ir_keyboard.c数组里面Key_Code ,增加物理键值以及linux/input.h 对应关系表。如果input.h里面没有你需要的,可以自己定义。
为了更改方便,新增的按键,我定义到了ir_keyboard.h里面了。
以上2步,可以只编译hi_keyboard.ko,编译方法http://blog.csdn.net/zvivi521/article/details/9626891
3、修改device\hisilicon\godbox\prebuilt下的 http://blog.csdn.net/zvivi521/article/details/9623741
Vendor_0001_Product_0001.kl,
frameworks/base/data/keyboards/Generic.kl
我这里用到的是这2个文件,注意两个文件中的按键不能重复定义,这里可以查看logcat打印,如果重复了,会在keymap的时候,有错误打印
以下涉及的文件是framework下面的文件改动,是我们在kl文件里面定义的keycodelabels的名称 和应用键值之间映射的对应
4、修改framework/base/core/res/res/values/attrs.xml
<enum name="KEYCODE_MUTE " value="12" /> 这个地方的value值是java应用层获取到的values值。
5、修改framework/base/core/java/android/view/keyevent.java
这里面需要修改2个地方。
<1>
一个是LAST_KEYCODE,之前添加如下,
public static final int KEYCODE_MUTE = 12;
如果KEYCODE_MUTE是最后一个,让LAST_KEYCODE = KEYCODE_MUTE
<2>
SparseArray<String> names = KEYCODE_SYMBOLIC_NAMES;最后面增加
names.append(KEYCODE_MUTE,"KEYCODE_MUTE");
4,5修改完之后,需要在根目录执行make update-api,不过这个地方有时候执行完了,更新不了,需要自己手动更新,
相应的文件在http://blog.csdn.net/zvivi521/article/details/9615199 这个路径下,framework/base/api下。
6、在keycodelabels.h数组里面增加新增按键和应用键值的对应关系,这个数组用于查找使用。framework/base/include/ui下面
7、在keycode.h里面增加新增按键,framework/base/native/include/android下面。
修改完毕后,执行全部编译,将system文件重新烧写。