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

      最后在该文件的结构下添加: 。到此keycode在/frameworks下算是添加成功了。编译frameworks.jar就可以用了。

 

 

 

更多相关文章

  1. 回顾 android 1.6下的 virtual key
  2. Flutter入门基础(十)- 图解修改应用名称及图标
  3. android评分条RatingBar自定义设置
  4. Android中的资源与国际化!
  5. Android深入浅出自定义控件(一)
  6. Android(安卓)自定义组合控件小结
  7. 【Android】@+id与@id的区别
  8. Android(安卓)Styles & Themes
  9. android 自定义SeekBar(拖动条)

随机推荐

  1. android绘制图标
  2. Android 可滚动圆形进度条 滑块和进度在
  3. Android 读取已知包名的uses-permission
  4. 全局窗口二
  5. 使Android支持Lambda表达式
  6. 自定义android循环拖动组件
  7. Android 之 ProgressBar用法介绍
  8. Android 串口数据处理
  9. MongoDB在Android上的使用体验
  10. android > Visualizer监听手机声波