RK3588S Android12添加一个自定义按键

1,kernel中增加键值定义,如下:

--- a/kernel-5.10/include/dt-bindings/input/rk-input.h
+++ b/kernel-5.10/include/dt-bindings/input/rk-input.h
@@ -620,6 +620,13 @@
 #define BTN_TRIGGER_HAPPY39            0x2e6
 #define BTN_TRIGGER_HAPPY40            0x2e7
 
+#define KEY_USERKEY     0x2e8

 /* We avoid low common keys in module aliases so they don't get huge. */
 #define KEY_MIN_INTERESTING    KEY_MUTE
 #define KEY_MAX                        0x2ff
diff --git a/kernel-5.10/include/uapi/linux/input-event-codes.h b/kernel-5.10/include/uapi/linux/input-event-codes.h
old mode 100644
new mode 100755
index 7989d9483e..2a2cf5e2fd
--- a/kernel-5.10/include/uapi/linux/input-event-codes.h
+++ b/kernel-5.10/include/uapi/linux/input-event-codes.h
@@ -779,6 +779,13 @@
 #define BTN_TRIGGER_HAPPY39            0x2e6
 #define BTN_TRIGGER_HAPPY40            0x2e7
 
+#define KEY_USERKEY     0x2e8

 /* We avoid low common keys in module aliases so they don't get huge. */
 #define KEY_MIN_INTERESTING    KEY_MUTE

2,dts中设置按键的配置(adc或gpio),比如:

+       gpio_keys: gpio-keys {^M
+                               status = "okay";^M
+                compatible = "gpio-keys";^M
+                autorepeat;^M
+                               userf1 {^M
+                        debounce-interval = <100>;^M
+                        gpios = <&gpio2 RK_PA7 GPIO_ACTIVE_LOW>;^M
+                        label = "GPIO user key";^M
+                        linux,code = <KEY_USERKEY>;^M
+                };^M

3,framework中增加新按键的相关定义,包括如下文件的修改:

1)

--- a/frameworks/native/include/android/keycodes.h
+++ b/frameworks/native/include/android/keycodes.h
@@ -776,7 +776,19 @@ enum {
     AKEYCODE_THUMBS_DOWN = 287,
     /** Used to switch current account that is consuming content.
      * May be consumed by system to switch current viewer profile. */
-    AKEYCODE_PROFILE_SWITCH = 288
+    AKEYCODE_PROFILE_SWITCH = 288,
+       
+       AKEYCODE_USERKEY = 289,

2)

--- a/frameworks/native/libs/input/InputEventLabels.cpp
+++ b/frameworks/native/libs/input/InputEventLabels.cpp
@@ -314,7 +314,13 @@ namespace android {
     DEFINE_KEYCODE(REFRESH), \
     DEFINE_KEYCODE(THUMBS_UP), \
     DEFINE_KEYCODE(THUMBS_DOWN), \
-    DEFINE_KEYCODE(PROFILE_SWITCH)
+    DEFINE_KEYCODE(PROFILE_SWITCH),\
+       DEFINE_KEYCODE(USERKEY)

3)

--- a/frameworks/base/core/res/res/values/attrs.xml
+++ b/frameworks/base/core/res/res/values/attrs.xml
@@ -1984,6 +1984,12 @@
         <enum name="KEYCODE_THUMBS_UP" value="286" />
         <enum name="KEYCODE_THUMBS_DOWN" value="287" />
         <enum name="KEYCODE_PROFILE_SWITCH" value="288" />
+               <enum name="KEYCODE_USERKEY" value="289" />

4)

--- a/frameworks/base/core/java/android/view/KeyEvent.java
+++ b/frameworks/base/core/java/android/view/KeyEvent.java
@@ -830,6 +830,18 @@ public class KeyEvent extends InputEvent implements Parcelable {
      * consuming content. May be consumed by system to set account globally.
      */
     public static final int KEYCODE_PROFILE_SWITCH = 288;
+       
+       public static final int KEYCODE_USERKEY = 289;

5)

--- a/frameworks/base/core/api/current.txt
+++ b/frameworks/base/core/api/current.txt
@@ -47756,6 +47756,12 @@ package android.view {
     field public static final int KEYCODE_TV_ZOOM_MODE = 255; // 0xff
     field public static final int KEYCODE_U = 49; // 0x31
     field public static final int KEYCODE_UNKNOWN = 0; // 0x0
+    field public static final int KEYCODE_USERKEY = 289; // 0x121

4,修改按键映射文件,增加内核键值到android键值的映射,如下:

--- a/frameworks/base/data/keyboards/Generic.kl
+++ b/frameworks/base/data/keyboards/Generic.kl
@@ -411,6 +411,13 @@ key 582   VOICE_ASSIST
 # Linux KEY_ASSISTANT
 key 583   ASSIST
 
+key 744   USERKEY

这里也有可能是修改device\rockchip\common\rk29-keypad.kl文件,根据实际情况进行修改。

5,在PhoneWindowManager.java中的interceptKeyBeforeDispatching和interceptKeyBeforeQueueing中添加新按键事件的case,如下:

case KeyEvent.KEYCODE_USERKEY:
+                       //do nothing
+                       break;

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值