android机顶盒遥控器添加按键KEY
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在android2.2下如何新增一个按键
本文以添加F1遥控器按键为例,简述一下操作步骤:
Kernel空间:
1、修改遥控器的驱动程序,在遥控器的驱动程序中(Ir_keyboard.h)添加F1被读出来的原
始键值,如下:
那我们如何知道IR_KEY_F1的值呢,在sdk\msp\android_driver\hi_keypad\Ir_keypad.c中的IR_Keypad_IntIsr()函数的ret = IR_Keypad_GetValue(&keyval);语句下面增加打印信息,打印出keyval的值既是。
2、在include\linux\input.h中添加F1的按键值,input.h是linux的标准按键值,如下:
3:在Ir_keyboard.c中的Key_Code[]添加相应的对应关系,如下:
在Ir_keyboard.c中,通过IR_KEY_F1查找到KEY_F1后,在IR_Keypad_IntIsr()函数中,通过input_event(edev->input, EV_KEY, Key_Code[i].linux_key_code, (ret & 0x01));将KEY_F1上传到用户空间。
注:如何快速查看一个按键的linux的标准键值?
在串口下输入getevent,,然后按相应的按键,串口下即有
相应的键值,如下:
0x3b(十进制59)既是F1 Key相应的linux标准键值。
用户空间:
4:在使用的*.kl文件中追加按键值,默认使用的是qwerty.kl文件,但是不同的产品有不同的*.kl文件,需要找准确文件,在程序中追加:
这里的59既是KEY_F1在input.h中定义的值,后面的F1就是在keycodelabels.h中定义的F1字符串。在keycodelabels.h中的定义如下:
但是需要注意,追加的按键必须在最后的NULL的前面。在这个地方,会将F1字符串转换成数值、键值,传送到KeyEvent.java中。
5:在frameworks/base/core/java/android/view/KeyEvent.java中添加,如下:
如果是在最后面追加的话,需要注意修改LAST_KEYCODE的值为最后一个。
6:同时,需要在frameworks/base/core/res/res/values/attrs.xml中追加,如下图:
KeyEvent.java中添加的数值要与attrs.xml中的数值保持一致
修改完后,需要在根目录下执行make update-api更新current.xml文件,否则编译时会出错。至此,按键支持添加完毕,就可以在应用程序中响应F1按键了。