RK3328新增按键keyboard键值
平台:RK3328
新增按键使得Android上层可以收到。
1、在使用的dts文件中:
rockchip-key {
/*/使用该module--- rockchip,key,可以同时支持gpio和saradc两种*/
compatible = "rockchip,key";
io-channels = <&saradc 1>;//原理图上确认是saradc1
status = "okay";
xxx1 {
/*gpioX Y 表示io口。如果GPIO2_C6 则是gpio2 22
*A0~7,B0~7,以此类推。linux,code根据下面第二点按顺序填,如轮到250
*/
gpios = <&gpioX Y GPIO_ACTIVE_LOW>;
linux,code = <250>;
label = "xxx xxx";
gpio-key,wakeup;
};
xxx2 {
/*linux,code根据下面第二点按顺序填如251,V是adc的值,我取巧了,通过查看打印得到该值再填进去的*/
linux,code = <251>;
label = "power sar";
rockchip,adc_value = <V>;
};
}
2、在kernel\include\dt-bindings\input (实际是哪个文件我还没确定,例如其中一个项目是rk-input.h),按顺序添加相应的键值,(之前写kernel/include/uapi/linux/input-event-codes.h,但是发现要根据dts文件的头文件决定)
1 #define KEY_RESERVED 0 2 . 3 . 4 . 5 6 #define KEY_XXX 250 /* xxx */ 7 #define KEY_WWW 251 /* www */
3、在framework/base/core/res/res/values/attrs.xml中,按顺序新增键,但是注意,这个值与kernel的值是不一样的,第4点会将这个键与kernel的值对应起来:
1 <!-- This enum provides the same keycode values as can be found in 2 {@link android.view.KeyEvent}. --> 3 <attr name="keycode"> 4 <enum name="KEYCODE_UNKNOWN" value="0" /> 5 <enum name="KEYCODE_SOFT_LEFT" value="1" /> 6 <enum name="KEYCODE_SOFT_RIGHT" value="2" /> 7 ...... 8 ...... 9 ...... 10 <enum name="KEYCODE_XXX" value="290" /> 11 <enum name="KEYCODE_WWW" value="291" />
4、在framework/base/data/keyboards/rk29-keypad.kl(具体看使用的是哪个kl文件,比如Generic.kl),写入该键,XXX必须与第三点的KEYCODE_XXX中的XXX一致,值250必须与第二点的linux,code一致:
key 250 XXX key 251 WWW
5、在native层,framework/native/include/android/keycodes.h在enum中新增codes,值与第三点一致:
/** * Key codes. */ enum { AKEYCODE_XXX = 290, AKEYCODE_WWW =291,
6、在framework/native/include/input/InputEventLabels.h中:
static const InputEventLabel KEYCODES[] = { ... ... ... DEFINE_KEYCODE(XXX), DEFINE_KEYCODE(WWW),
7、在frameworks\base\core\java\android\view/KeyEvent.java中,class KeyEvent加入(之前漏掉了)
public static final int KEYCODE_XXX = 290; public static final int KEYCODE_WWW = 291;
.........
有时候编译会报错


此时要在3568目录下,执行命令 make update-api
8、在framework/base/core/java/com/android/internal/policy/PhoneFallbackEventHandler.java中,onKeyDown函数:
1 switch (keyCode) { 2 case KeyEvent.KEYCODE_XXX: //新增,功能实现

浙公网安备 33010602011771号