Android P 添加自定义按键

1.kernel-4.4/arch/arm64/boot/dts/mediatek/tb8788p1_64_bsp.dts
其中633与634为自定义按键

&keypad {
+       mediatek,kpd-hw-init-map = <114 633 0 0 0 0 0 0 0 580 634 0 0 0 0 0 0 0 102 158 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 };

2.kernel-4.4/include/uapi/linux/input-event-codes.h
其中0x279与0x280是633与634的十六进制。

 #define KEY_KBDINPUTASSIST_CANCEL              0x265
+#define KEY_NEOSTRA_P          0x279
+#define KEY_NEOSTRA_F          0x280
 
 #define BTN_TRIGGER_HAPPY              0x2c0

3.device/mediateksample/tb8788p1_64_bsp/mtk-kpd.kl
其中633与634要和第1点kernel中配置一致,NEOSTRA_P和NEOSTRA_F为上层调用的自定义名称。

 key 602   HALL_AWAY
+key 633   NEOSTRA_P
+key 634   NEOSTRA_F

4.frameworks/native/include/input/InputEventLabels.h

     DEFINE_KEYCODE(REFRESH),
+    DEFINE_KEYCODE(NEOSTRA_P),
+    DEFINE_KEYCODE(NEOSTRA_F),

5.frameworks/native/include/android/keycodes.h
其中286与287是285的叠加

-    AKEYCODE_REFRESH = 285
+    AKEYCODE_REFRESH = 285,
 
+    AKEYCODE_NEOSTRA_P = 286,
+    AKEYCODE_NEOSTRA_F = 287

6.frameworks/base/core/res/res/values/attrs.xml
其中286与287是285的叠加

         <enum name="KEYCODE_REFRESH" value="285" />
+        <enum name="KEYCODE_NEOSTRA_P" value="286" />
+        <enum name="KEYCODE_NEOSTRA_F" value="287" />

7.frameworks/base/core/java/android/view/KeyEvent.java
其中286与287是285的叠加

     public static final int KEYCODE_REFRESH = 285;
 
-    private static final int LAST_KEYCODE = KEYCODE_REFRESH;
+    public static final int KEYCODE_NEOSTRA_P = 286;
+    public static final int KEYCODE_NEOSTRA_F = 287;
+
+    private static final int LAST_KEYCODE = KEYCODE_NEOSTRA_F;

8.frameworks/base/api/current.txt
其中286与287是285的叠加

     field public static final int KEYCODE_REFRESH = 285; // 0x11d
+    field public static final int KEYCODE_NEOSTRA_P = 286; // 0x11e
+    field public static final int KEYCODE_NEOSTRA_F = 287; // 0x11f
     field public static final int KEYCODE_RIGHT_BRACKET = 72; // 0x48

9.最后在上层检测自定义按键响应事件,做对应的逻辑处理

if(keyCode == KeyEvent.KEYCODE_NEOSTRA_P){
    ......
}

if(keyCode == KeyEvent.KEYCODE_NEOSTRA_F){
    ......
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最乱纷飞的code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值