首先查看原理图用的是gpio还是矩阵按键。
1. 矩阵按键
1.1 kernel更改
① 先查看原理图,看下按键位置对应的位置,并查看其对应的矩阵管脚。
② 更改input_event_codes.h,增加新增按键键值。(找不到路径就搜索)
③ 配置dws矩阵管脚,并在keypad对应位置指定按键。(新增的按键,需要先在Yusu.cmp增加按键并增加与input_event_codes.h相同的键值)
④ 查看按键按下时是否有键值上报(键值与input_event_codes.h定义相同)
adb shell getevent
1.1 adb查看时间
查看指定事件上报:getevent /dev/input/event1
1.2 指定事件
看到上报键值,说明添加成功。
1.2 framework更改
① 先搜索keycodes.h文件
1.3 搜索keycodes路径
找到路径 frameworks/native/include/android/keycodes.h
1.4 keycodes.h
在末尾添加需要的按键,注意看NOTE:
NOTE: If you add a new keycode here you must also add it to several other files.
Refer to frameworks/base/core/java/android/view/KeyEvent.java for the full list.
② 在KeyEvent.java添加
1.5 KeyEvent.java
并按提示在相应文件添加按键定义。
最后需要在Generic.kl添加PTT键值。
③ 测试logcat 查看应用层接收到的键值
adb shell
logcat | grep WindowManager
1.6 上报事件
显示接收到的按键 scancode 249 //kernel 键值
keycode 289//应用层键值
添加成功。
2. GPIO按键添加
与keypad按键不同的是:GPIO按键需要自写驱动,keypad用的系统自带keypad驱动。
① 添加键值与keypad流程一致。
② 在keypad驱动probe中,写上GPIO键值中断上报即可。
应该也可以使用系统自带的gpio-keys.c驱动,需要配置dws,dts文件。
2020-06-23