在Android系统中添加对新遥控器按键的支持

本文详细阐述了如何在Linux系统中添加RED、GREEN、YELLOW、BLUE四个遥控器按键的操作步骤,包括修改驱动程序、添加按键定义、追加按键到*.kl文件、在codeLabels.h中定义按键名称、在attrs.xml中追加按键枚举值,并在KeyEvent.java中添加按键值。
摘要由CSDN通过智能技术生成

转自   http://blog.csdn.net/xiruanliuwei/article/details/6969777

 

本文以添加RED、GREEN、YELLOW、BLUE四个遥控器按键为例,简述一下操作步骤:

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

  1. <SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 16px"><SPAN style="WHITE-SPACE: pre">   </SPAN>在static const t_translate_code translate_code_table[]中添加  
  2. <SPAN style="WHITE-SPACE: pre"> </SPAN>{0xb44b3e01, KEY_RED, 0}, //Red   
  3. <SPAN style="WHITE-SPACE: pre"> </SPAN>{0xb54a3e01, KEY_GREEN, 0}, //Green   
  4. <SPAN style="WHITE-SPACE: pre"> </SPAN>{0xb6493e01, KEY_YELLOW, 0}, //Yellow   
  5. <SPAN style="WHITE-SPACE: pre"> </SPAN>{0xb7483e01, KEY_BLUE, 0}, //Blue   
  6. </SPAN>  
	在static const t_translate_code translate_code_table[]中添加
	{0xb44b3e01, KEY_RED, 0}, //Red
	{0xb54a3e01, KEY_GREEN, 0}, //Green
	{0xb6493e01, KEY_YELLOW, 0}, //Yellow
	{0xb7483e01, KEY_BLUE, 0}, //Blue

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

  1. <SPAN style="FONT-FAMILY: 'Courier New'"><SPAN style="WHITE-SPACE: pre">    </SPAN>#define KEY_RED                 0x18e  
  2. <SPAN style="WHITE-SPACE: pre"> </SPAN>#define KEY_GREEN               0x18f  
  3. <SPAN style="WHITE-SPACE: pre"> </SPAN>#define KEY_YELLOW              0x190  
  4. <SPAN style="WHITE-SPACE: pre"> </SPAN>#define KEY_BLUE                0x191</SPAN>  
	#define KEY_RED                 0x18e
	#define KEY_GREEN               0x18f
	#define KEY_YELLOW              0x190
	#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><!-- This enum provides the same keycode values as can be found in  
  7.        {@link android.view.KeyEvent}. -->  
  8. </SPAN>  
        <enum name="KEYCODE_RED" value="141" />
        <enum name="KEYCODE_GREEN" value="142" />
        <enum name="KEYCODE_YELLOW" value="143" />
       	<enum name="KEYCODE_BLUE" value="144" />

	<!-- This enum provides the same keycode values as can be found in
       {@link android.view.KeyEvent}. -->

同时,需要在frameworks/base/core/java/android/view/KeyEvent.java中添加:

  1. <SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 16px">   <SPAN style="WHITE-SPACE: pre">    </SPAN>public static final int KEYCODE_RED = 141;  
  2.         public static final int KEYCODE_GREEN = 142;  
  3.         public static final int KEYCODE_YELLOW = 143;  
  4.         public static final int KEYCODE_BLUE = 144;  
  5. </SPAN>  
   	public static final int KEYCODE_RED = 141;
        public static final int KEYCODE_GREEN = 142;
        public static final int KEYCODE_YELLOW = 143;
        public static final int KEYCODE_BLUE = 144;

KeyEvent.java中添加的数值要与上面attrs.xml中的数值保持一致,如果是在最后面追加的话,需要注意修改LAST_KEYCODE的值为最后一个。
修改完后,需要在根目录下执行make update-api更新current.xml文件,否则编译时会出错。

至此,按键支持添加完毕,就可以在应用程序中响应这些按键了。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值