android机顶盒遥控器添加按键KEY

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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按键了。

相关文档
最新文档