Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1469658
  • 博文数量: 213
  • 博客积分: 10418
  • 博客等级: 上将
  • 技术积分: 3358
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-09 23:49
文章分类

全部博文(213)

文章存档

2014年(1)

2013年(5)

2012年(11)

2011年(2)

2010年(8)

2009年(26)

2008年(160)

分类: Android平台

2013-09-06 16:36:24

 现在Android系统的使用越来越广泛,很多STB中也在使用Android系统,STB遥控器中经常需要使用一些特殊的按键,这就需要我们能够在Android系统中添加对新遥控器按键的支持,本文以添加RED、GREEN、YELLOW、BLUE四个遥控器按键为例,简述一下操作步骤:

1、修改遥控器的驱动程序,在遥控器的驱动程序中(通常是头文件中)添加:

  1. "font-family:'Courier New';font-size:16px;">"white-space:pre">  static const t_translate_code translate_code_table[]中添加  
  2. "white-space:pre">  {0xb44b3e01, KEY_RED, 0}, //Red  
  3. "white-space:pre">  {0xb54a3e01, KEY_GREEN, 0}, //Green  
  4. "white-space:pre">  {0xb6493e01, KEY_YELLOW, 0}, //Yellow  
  5. "white-space:pre">  {0xb7483e01, KEY_BLUE, 0}, //Blue  
  6.   


第一列的数值是驱动程序读取获得的按键值,通过这个表,将其翻译成Linux的标准按键值,Linux的标准按键值在include\linux\input.h文件中定义,翻译成Linux的标准按键值后,再通过input_report_xxx函数(也在include\linux\input.h中定义)将按键值送到用户空间中。2、在input.h文件中添加需要添加的按键值:

  1. "font-family:'Courier New';">"white-space:pre"#define KEY_RED                 0x18e  
  2. "white-space:pre">  #define KEY_GREEN               0x18f  
  3. "white-space:pre">  #define KEY_YELLOW              0x190  
  4. "white-space:pre">  #define KEY_BLUE                0x191  


3、在使用的*.kl文件中追加按键值,默认使用的是qwerty.kl文件,但是不同的产品有不同的*.kl文件,需要找准确文件,在后面追加:

key 398 RED

key 399 GREEN

key 400 YELLOW

key 401 BLUE

这里的398、399、400、401是KEY_RED、KEY_GREEN、KEY_YELLOW、KEY_BLUE在input.h中定义的值,也就是上面的0x18e,0x18f,0x190, 0x191,后面的字符串RED等就是下面的keycodeLabels.h中定义的RED、GREE、YELLOW、BLUE字符串。

在这个地方将input_report_xxx传送上来的值转换成对应的字符串。4、在文件frameworks/base/include/ui/keycodeLabels.h中,在后面顺序添加:

 { "RED", 141},

     { "GREEN",142},

     { "YELLOW",143},

     { "BLUE",144},

        ...     

        { NULL, 0 }

但是需要注意,追加的按键必须在最后的NULL的前面。 在这个地方,会将RED等这些字符串转换成数值、键值,传送到KeyEvent.java中。4、在frameworks/base/core/res/res/values/attrs.xml中追加:

  1. <span style="font-family:'Courier New';font-size:16px;">        <enum name="KEYCODE_RED" value="141" />  
  2.         <enum name="KEYCODE_GREEN" value="142" />  
  3.         <enum name="KEYCODE_YELLOW" value="143" />  
  4.        <span style="white-space:pre">   span><enum name="KEYCODE_BLUE" value="144" />  
  5.   
  6. <span style="white-space:pre">  span>
    阅读(6823) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~