Android8.0 在framework中添加KeyCode
KeyCode是Android的按键代码,每个按键不管实体的还是虚拟的都对应一个int值,在/framework/base/core/java/android/view/的KeyEvent.java文件中可以查看android所有的keycode。实体的按键需要在驱动层的文件添加。如果驱动部分OK的话,当按键触发时,Android会在key上报。可用adb查看(先adb shell 链接后 在用adb event -l 命令。如下图,触发按键后有如下信息,分别是event type、event code、event value。
当得到上图你所需要的key信息后就可以在framework中将要添加的keycode添加进去了。
1./frameworks/base/data/keyboards/Generic.kl
在该文件添加key的value值并且定义key的名称:key 645 XXXXXX 其中645和xxxx为驱动定义的value值,XXXXXX在madev.h中定义的,645在input-event-codes.h中定义的(0x285 == 645) 。
2./frameworks/native/include/input/InputEventLabels.h
在该文件的static const InputEventLabel KEYCODES[]{}中添加: DEFINE_KEYCODE(XXXXXX),其中xxxx为驱动层上报的key。
3./frameworks/native/include/android/keycodes.h
在该文件的enum{}里添加自定义的key值和value值 AKEYCODE_XXXXXX = 290 (这里的值与驱动层无关,是自己定义的)。
需要注意的地方如果keycode的值在以下范围内,是无效的。
a.小于272 b.大于352 c.大于等于256且小于272 d大于等于288且小于320
4./frameworks/base/core/java/android/view/KeyEvent.java
在该文件定义keycod: public static final int KEYCODE_XXXXXX = 290; 在此需要注意几个方法:isSystemKey(int keyCode),isMediaKey(int keyCode) 等等。是什么类型的key就添加到该方法里面。
5./frameworks/base/core/res/res/values/attrs.xml
最后在该文件的结构下添加:
更多相关文章
- android评分条RatingBar自定义设置
- Android深入浅出自定义控件(一)
- Android 自定义组合控件小结
- android 自定义SeekBar(拖动条)
- Android 自定义View及其在布局文件中的使用示例
- Android 手把手进阶自定义View(九)- 自动换行 ViewGroup
- Android中自定义属性基本步骤
- Android平台开发-Android keypad map-Android按键事件
- [Android 界面] Android: 自定义DIALOG