背景

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

RK3399添加物理按键相关推荐

  1. android8.1 添加物理按键流程

    原文地址:https://blog.csdn.net/tt11212/article/details/87608373 一,添加android已有的功能按键 当新增的按键功能是android系统默认自 ...

  2. Android TV 悬浮球模拟物理按键

      最近在体验实习的时候做了一个TV的内存管家,其中有个要求是实现一个悬浮球,模拟TV控制器的按键,实现上下左右,back,menu,home等效果,并且做一个火箭升空的效果.这时候才发现网上有关tv ...

  3. 关于LVGL下物理按键的使用

    当时有一个想法,想用我珍藏3年全新未开封的mini开发板,使用LVGL显示,然后用物理按键控制,最终制作一个...好吧我编不下去了.其实就是想在LVGL界面下使用物理按键控制. 然后就在网上疯狂找使用 ...

  4. 案例分享:Qt+Arm+Fpga医疗肾镜(又名内窥镜)(实时影像、冻结、拍照、白平衡、九宫格、录像、背光调整、硬件光源调整、光源手动自动调整、物理按键)

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/111241205 长期持续带来更多项目与技术分 ...

  5. Android 10 新增物理按键

    1.当驱动层添加完成配置后,通过getevent命令查看底层驱动配置的键值 Seoul_TF:/ $ Seoul_TF:/ $ getevent add device 1: /dev/input/ev ...

  6. Android模拟器AVD接收电脑键盘和模拟器物理按键输入

    最近一直在做Android开发,由于心疼自己的手机,总是用模拟器进行开发,可是发现一个问题就是AVD无法接收电脑键盘和AVD物理按键输入,只能使用软键盘,总是用鼠标点,真心的疼,后来发现是因为新的AD ...

  7. 物理按键一键拍照,一键录像,一键录音

    一键拍照,一键录像: (S版本) 首先在对应的键值逻辑上做逻辑处理 base/services/core/java/com/android/server/policy/PhoneWindowManag ...

  8. android系统底层驱动多个物理按键上报同一个键值给app层,app层如何区分

    如果设备有多个按键上报同一个键值给app层,app通过getScanCode()可以区分是哪个物理按键,得到的值就是linux驱动层的扫描码

  9. android物理健代码,Android 物理按键整理及实例代码

    先给大家看一段代码,然后说明. import android.app.Activity; import android.os.Bundle; import android.util.Log; impo ...

最新文章

  1. oracle之 手动创建 emp 表 与 dept 表
  2. 一文彻底理解Java单元测试
  3. (赞助5本)谷歌官方推荐的 TensorFlow 2 “豹书”来了!
  4. 【建议收藏】centos更新yum源为阿里云
  5. android实现自动横竖屏切换,android 中实现横竖屏切换【原创】
  6. OpenCV Mat基础认知感
  7. 职场 | 工作五年之后,对技术和业务的思考
  8. xampp服务器搭建和使用
  9. 走心地讨论一下,一个中国码农在硅谷求职的实用经历
  10. python接收邮件内容启动程序_如何使用python获取电子邮件的文本内容?
  11. Caused by: java.lang.SecurityException: com.example.geofences from uid 10049 not allowed to perform
  12. MATLAB实现偏最小,偏最小二乘法 matlab程序
  13. 微信小程序二手交易系统ssm框架
  14. 插件框架篇一之scrollbars
  15. cinta作业5:循环群
  16. 计算机数学基础 周密,一位计算机牛人的心得谈计算机和数学免费.doc
  17. Windows System Tool -- Windows Sysinternals Tools
  18. XP系统IE浏览器无法访问https
  19. python把视频切成2秒_python进行视频切割
  20. MAC 反编译安卓问题汇总

热门文章

  1. 关于偶尔会用到 但用起来两眼发愣的 STL(应该不会更新)
  2. 移动电源充电宝新国标GB/T 35590-2017检测报告详细测试内容
  3. ng-Bootstrap之Datepicker使用
  4. USB一致性测试-USB2.0测试
  5. Mac效率工具 HapiGo 1.0.1 Mac中文版
  6. 游戏的基础—三消-1
  7. 如何安装配置BRAS
  8. 被阿里面试吊打的笔记
  9. Nginx 自动url decode探究及如何避免url decode
  10. React表单 (受控组件,非受控组件)