RK3399 Android7.1 新添加一个自定义按键

举例:添加一个"屏幕旋转键(rotate key)"

1,linux内核定义一个按键扫描码
在按键的配置文件中设置扫描码,比如dts中
rotate-key {
            linux,code = <760>;
            label = "rotate";
            rockchip,adc_value = <355>;
        };
其中“linux,code”就是按键扫描码,其定义在kernel\arch\arm64\boot\dts\include\dt-bindings\input\linux-event-codes.h中,最大值为767(0x2ff)
#define KEY_MAX            0x2ff

2,修改键值映射表rk29-keypad.kl
在device\rockchip\common\rk29-keypad.kl中添加
key 760 ROTATE

注意,这里的ROTATE要与下面InputEventLabels.h中定义的DEFINE_KEYCODE(ROTATE)中的ROTATE名字保持一致。

3,定义android键值
./frameworks/native/include/input/InputEventLabels.h中添加    
DEFINE_KEYCODE(ROTATE),

4,
./frameworks/native/include/android/keycodes.h中添加
AKEYCODE_ROTATE             = 300

5,
./frameworks/base/core/res/res/values/attrs.xml添加
<enum name="KEYCODE_ROTATE" value="300" />

6,
./frameworks/base/core/java/android/view/KeyEvent.java添加
public static final int KEYCODE_ROTATE = 300;

7,
./frameworks/base/api/system-current.txt添加
field public static final int KEYCODE_ROTATE = 300;
./frameworks/base/api/current.txt添加
field public static final int KEYCODE_ROTATE = 300;

8,处理按键消息
./frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java中interceptKeyBeforeDispatching函数中添加

if (keyCode == KeyEvent.KEYCODE_ROTATE) {

        //do nothing
 }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值