- 新增按键的遥控器往往不是我们公版遥控器,不能利用现有按键实现特定功能,需要在系统中新增以支持特定APK应用场景。
- 1) 通过打印找出新增按键的ircode
- 2) 在device\a***c\xxx\remote.conf找到ircode对应行,或新建一行。这个文件中需要注意factory_code = 0xfd020001 是遥控器的客户码,必须与实体遥控器对应。
- 3) 修改device\a***c\xxx\aml_keypad.kl或Vendor_0001_Product_0001.kl
- 添加时依照上下文的格式:例如 key 1 BACK这行中,"1"对应remote.conf 中的scancode,"BACK" 就是需要在后面keycodeLabels.h中定义的字串,新增按键可以自定义这个字串,比如RED。
- 4) frameworks/base/include/ui/KeycodeLabels.h,在KEYCODES[]数组后面顺序添加:
- ...
- { "RED", 141},
- { NULL, 0 }
- 注意:
- a) 追加的按键须在末行的{ NULL, 0 }前面。 在这个地方,会将RED等这些字符串转换成数值、键值,传送到KeyEvent.java中。
- b) RED后面的数值,需要与客户协商,客户APK应该专门处理这个新建的141值。
- c) 141的值不应与其他keycode重复,建议新增键的取值依照上文的值,依次累加。
- 5)在frameworks/base/core/res/res/values/attrs.xml中追加:
- <enum name="KEYCODE_RED" value="141" />
- 6)在frameworks/base/core/java/android/view/KeyEvent.java中添加:
- public static final int KEYCODE_RED = 141;
- KeyEvent.java中添加的数值要与上面attrs.xml中的数值保持一致,如果是在最后面追加的话,需要注意修改LAST_KEYCODE的值 为最后一个。
- 7)修改完后,需要在根目录下先执行make update-api更新current.xml(frameworks\base\api目录下)文件,再进行编译,否则会报错。
- 8)还要在frameworks\base\native\include\android\keycodes.h 添加AKEYCODE_xxxx = xxx,
-
9)\frameworks\base\libs\ui\Input.cpp里添加 case AKEYCODE_IR_POWER:在2处相应的位置
- 10)sun4i-ir.kl里 的键值要和linux3.0/include/linux/input.h的一样