RK3399添加物理按键

背景

Platform: RK3399

OS: Android7.1.2

Kernel: v4.4.103

调试

通过命令cat /proc/bus/input/devices 确认按键使用的键值对的文件名 通过“name”字段判断。

getevent可以查看上报的键值和状态

添加android已有的功能按键

当新增的按键功能是android系统默认自带的,

需要在frameworks/base/data/keyboards/Generic.kl 中找到你需要的按键键值

然后在对应的dts中添加对应的按键映射就可以了。

需确保使用的键值对的文件device/rockchip/common/rk29-keypad.kl里也有该键值对

添加自定义按键

具体可以参考某个已有的按键,在同一位置添加自定义按键

在device/rockchip/common/rk29-keypad.kl 中添加按键的键值对。驱动上报的键值。

frameworks/native/include/android/keycodes.h 和frameworks/native/include/input/InputEventLabels.h 中添加android层键值定义。

frameworks/base/core/java/android/view/KeyEvent.java 和frameworks/base/core/res/res/values/attrs.xml定义APP层按键常量。

frameworks/base/data/keyboards/Generic.kl 中添加键值对。

frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java 中的interceptKeyBeforeQueueing()函数中添加系统层按键处理

参考

https://blog.csdn.net/u010783226/article/details/940514620

Howard调试:事实上,通过

130|nct_zz:/proc/bus/input #

130|nct_zz:/proc/bus/input #

130|nct_zz:/proc/bus/input # getevent

add device 1: /dev/input/event1

  name:     "rk29-keypad"

add device 2: /dev/input/event0

  name:     "goodix-ts"

/dev/input/event1: 0001 003f 00000001   警急报警按下63

/dev/input/event1: 0000 0000 00000000

/dev/input/event1: 0001 003f 00000000   警急报警松开

/dev/input/event1: 0000 0000 00000000

然后在device/rockchip/common/rk29-keypad.kl中添加了相应键值 F5-->对应63

key 113   F12      //静音

key 59    F1 //线路输入

key 60    F2

key 61    F3         //听筒摘起

key 62    F4 //

key 63    F5        //紧急报警

然后在app中调用紧急报警键值(这里在上层会转换成KEYCODE_F5)

case KEYCODE_F5: // 紧急广播

    if(BroadcastFragment.mbStartLocal == true){

        break;

    }

其他方法

另外 adb pull /system/usr/keylayout/rk29-keypad.kl 

修改后直接 push 进去也可以完成任务

附件目录

https://download.csdn.net/download/yanhongfei268/85506599

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值