展会信息港展会大全

Android红外摇控与remote.conf
来源:互联网   发布日期:2015-09-28 16:00:32   浏览:2406次  

导读:这几天在研究Amlogic的红外摇控,主要涉及到/system/etc/remote.conf和/system/usr/keylayout/Vendor_0001_Product_0001.k...

这几天在研究Amlogic的红外摇控,主要涉及到/system/etc/remote.conf和/system/usr/keylayout/Vendor_0001_Product_0001.kl这两个文件,其实一般情况下只需要修改/system/etc/remote.conf这个文件就可以了,下面我们来介绍下remote.conf怎么修改.

换摇控之后,你按键会出现这样的打印信息:

[727.416139@0] Wrong custom code is 0x2dd2ff00

[727.868522@0] Wrong custom code is 0x6699ff00

[728.217197@0] Wrong custom code is 0x3ec1ff00

[728.626735@0] Wrong custom code is 0x2dd2ff00

[728.929900@0] Wrong custom code is 0x6699ff00

[729.239544@0] Wrong custom code is 0x3ec1ff00

如果按键没这些,请在终端执行remotecfg,如果还是没有执行下dmesg查看下内核信息.

我们来看下remote.conf的内容:

[java]

#*********************************************************************************************************

#this file is configuration for each factory remote device

#work_mode0 :software mode1 :hardware mode

#repeat_enable0 :disable repeat 1 :enable repeat

#

#factory_codeeach device has it's unique factory code.

#pattern:custom_code(16bit)+index_code(16bit)

#examble: 0xff000001 = 0xff00(custom cod)0001 (index)

#

#release_delayunit:ms.release will report from kernel to user layer after this period of time

#from press or repeat triggered.

#

#debug_enable0 :debug disable1 :debug disable

#

# SW MODE:

#bit_counthow many bits in each frame

#tw_leader_acttime window for leader active

#tw_bit0time window for bit0 time.

#tw_bit1time window for bit1 time

#tw_repeat_leadertime window for repeat leader

# REG

#reg_base_genset value for PREG_IR_DEC_BASE_GEN

#reg_controlset value for PREG_IR_DEC_CONTROL

#reg_leader_actset value for PREG_IR_DEC_LEADER_ACTIVE

#reg_leader_idleset value for PREG_IR_DEC_LEADER_IDLE

#reg_repeat_leader set value for PREG_IR_DEC_REPEAT_IDLE

#reg_bit0_timeset value for PREG_IR_DEC_BIT0_TIME

#*************************************************************************************************************

#amlogic NEC remote

factory_code= 0xff000001

work_mode= 1

repeat_enable = 1

release_delay=150

debug_enable= 1

reg_control = 0xfbe40

#left 0x6699ff00

left_key_scancode= 0x99

right_key_scancode = 0xc1

up_key_scancode= 0xca

down_key_scancode= 0xd2

ok_key_scancode= 0xce

key_begin

0x99 105

0xc1 106

0xca 103

0xd2 108

0xce 28

0x92 2

0x93 3

key_end

这个是我修改之后的,首先看下这部分:

[java]

#amlogic NEC remote

factory_code= 0xff000001

work_mode= 1

repeat_enable = 1

release_delay=150

debug_enable= 1

reg_control = 0xfbe40

这里只有factory_code需要进行修改,我们按键之后的打印信息如下:

[727.416139@0] Wrong custom code is 0x2dd2ff00

[727.868522@0] Wrong custom code is 0x6699ff00

[728.217197@0] Wrong custom code is 0x3ec1ff00

[728.626735@0] Wrong custom code is 0x2dd2ff00

[728.929900@0] Wrong custom code is 0x6699ff00

[729.239544@0] Wrong custom code is 0x3ec1ff00

可以看到后16位是不变的都是ff00,有的可能是在高16位例如:

[728.929900@0] Wrong custom code is 0xff002dd2

[729.239544@0] Wrong custom code is 0xff003ec1

这是我乱编的,当然也有可能不是ff00也有可能是其它的,所以这里我们得到factory_code

factory_code就是0xff000001,前面得到的ff00在高位,低位的0001网上说可以随便写,不过这里还是写成0001

我们依次读到各个按键所打印出的数据:

[727.416139@0] Wrong custom code is 0x2dd2ff00

[727.868522@0] Wrong custom code is 0x6699ff00

[728.217197@0] Wrong custom code is 0x3ec1ff00

[728.626735@0] Wrong custom code is 0x2dd2ff00

[728.929900@0] Wrong custom code is 0x6699ff00

[729.239544@0] Wrong custom code is 0x3ec1ff00

这些code就是对应的按键信息:

up: 0x35caff00

down:0x2dd2ff00

left:0x6699ff00

right:0x3ec1ff00

这里我就只说这几个了,其它的按键方法都是一样.

我们看到remote.conf剩下的部分:

[java]

left_key_scancode= 0x99

right_key_scancode = 0xc1

up_key_scancode= 0xca

down_key_scancode= 0xd2

ok_key_scancode= 0xce

key_begin

0x99 105

0xc1 106

0xca 103

0xd2 108

0xce 28

0x92 2

0x93 3

key_end

left_key_scancode后面的是一个8位的数和key_begin下面的以0x开关的数都是从

[727.416139@0] Wrong custom code is 0x2dd2ff00

[727.868522@0] Wrong custom code is 0x6699ff00

[728.217197@0] Wrong custom code is 0x3ec1ff00

[728.626735@0] Wrong custom code is 0x2dd2ff00

[728.929900@0] Wrong custom code is 0x6699ff00

[729.239544@0] Wrong custom code is 0x3ec1ff00

这些数据里面解析出来的,而key_begin后面的105 106 这些都是对应的系统的键码

我们先来看下前面的那个0x的数据怎么得到,首先以0x2dd2ff00为例,这个在摇控器上是对应的方向键down

0x2dd2ff00去掉产家代号ff00后剩下的就是2dd2了,remote.conf中的数值码就是以0x开关的那个要么就是0x2d要么就是0xd2,不是高8位就是低8位,这个不同的产家有可能不一样,像我这个就是低8位0xd2,这个我是试了之后才知道的。

不过也可以不用试就可以得出,首先得记录摇控器各个按键的编码,然后修改remote.conf的factory_code后,重启盒子,然后你在按键的时候就会出来这样的信息:

[145.727698@0] scancode is 0x008a, invalid key is 0x0000.

[145.868198@0] scancode is 0x008a, invalid key is 0x0000.

[166.160143@0] scancode is 0x008b, invalid key is 0x0000.

[166.308242@0] scancode is 0x008b, invalid key is 0x0000.

这个0x008a,8a是低8位,所以可以确定低8位是按键数值码.

下面说下remote.conf后面的105 103这些值,这些都是系统键码,码值定义一般是在内核源码include/linux/input.h中,然后在/system/usr/keylayout/Vendor_0001_Product_0001.kl中也会出现部分,当你要用的按键功能这个.kl里没有的时候你就可以去input.h里找.

我们看下/system/usr/keylayout/Vendor_0001_Product_0001.kl内容:

[java]

key 399GRAVE

key 1BACK

key 21

key 32

key 43

key 54

key 65

key 76

key 87

key 98

key 109

key 110

key 15BACK

key 158BACK

key 58SOFT_RIGHT

key 107ENDCALL

key 62ENDCALL

key 139MENU

key 125MENU

key 60NOTIFICATION

key 127SEARCH

key 217SEARCH

key 228POUND

key 227STAR

key 231CALL

key 61CALL

key 97DPAD_CENTER

key 232DPAD_CENTER

key 108DPAD_DOWN

key 103DPAD_UP

key 102HOME

key 105DPAD_LEFT

key 106DPAD_RIGHT

key 115VOLUME_UP

key 114VOLUME_DOWN

key 104VOLUME_UP

key 109VOLUME_DOWN

key 212CAMERA

key 16Q

key 17W

key 18E

key 19R

key 20T

key 21Y

key 22U

key 23I

key 24O

key 25P

key 26LEFT_BRACKET

key 27RIGHT_BRACKET

key 43BACKSLASH

key 30A

key 31S

key 32D

key 33F

key 34G

key 35H

key 36J

key 37K

key 38L

key 39SEMICOLON

key 40APOSTROPHE

key 14DEL

key 44Z

key 45X

key 46C

key 47V

key 48B

key 49N

key 50M

key 51COMMA

key 52PERIOD

key 53SLASH

key 28ENTER

key 56ALT_LEFT

key 100ALT_RIGHT

key 42SHIFT_LEFT

key 54SHIFT_RIGHT

#key 15TAB

key 57SPACE

key 70EXPLORER

key 155ENVELOPE

key 12MINUS

key 13EQUALS

key 215AT

key 119MEDIA_PLAY_PAUSE

key 122MEDIA_PREVIOUS

key 123MEDIA_NEXT

key 120MEDIA_FAST_FORWARD

key 121MEDIA_REWIND

key 116POWER WAKE

key 113VOLUME_MUTE

key 128MEDIA_STOP

key 130ZOOM_IN

key 131ZOOM_OUT

key 133TAB

key 140F10

里面有一个:

[java]

key 108DPAD_DOWN

这个108就是down对应的系统键码

前面我们说到摇控器down对应的编码是0x2dd2ff00

按键数值码是0xd2,功能是down,所以在key_begin里就应该是:

0xd2 108

我的摇控器部分编码:

up:0x35caff00

down:0x2dd2ff00

left:0x6699ff00

right:0x3ec1ff00

1:0x6d92ff00

2:0x6c93ff00

所以最后的remote.conf为:

[java]

#*********************************************************************************************************

#this file is configuration for each factory remote device

#work_mode0 :software mode1 :hardware mode

#repeat_enable0 :disable repeat 1 :enable repeat

#

#factory_codeeach device has it's unique factory code.

#pattern:custom_code(16bit)+index_code(16bit)

#examble: 0xff000001 = 0xff00(custom cod)0001 (index)

#

#release_delayunit:ms.release will report from kernel to user layer after this period of time

#from press or repeat triggered.

#

#debug_enable0 :debug disable1 :debug disable

#

# SW MODE:

#bit_counthow many bits in each frame

#tw_leader_acttime window for leader active

#tw_bit0time window for bit0 time.

#tw_bit1time window for bit1 time

#tw_repeat_leadertime window for repeat leader

# REG

#reg_base_genset value for PREG_IR_DEC_BASE_GEN

#reg_controlset value for PREG_IR_DEC_CONTROL

#reg_leader_actset value for PREG_IR_DEC_LEADER_ACTIVE

#reg_leader_idleset value for PREG_IR_DEC_LEADER_IDLE

#reg_repeat_leader set value for PREG_IR_DEC_REPEAT_IDLE

#reg_bit0_timeset value for PREG_IR_DEC_BIT0_TIME

#*************************************************************************************************************

#amlogic NEC remote

factory_code= 0xff000001

work_mode= 1

repeat_enable = 1

release_delay=150

debug_enable= 1

reg_control = 0xfbe40

#left 0x6699ff00

left_key_scancode= 0x99

right_key_scancode = 0xc1

up_key_scancode= 0xca

down_key_scancode= 0xd2

ok_key_scancode= 0xce

key_begin

0x99 105

0xc1 106

0xca 103

0xd2 108

0xce 28

0x92 2

0x93 3

key_end

网上有一对remote.conf里面这些的详细说明,我这里就不作说明,我就说下这些数据怎么来的,不知道有没有说清楚。

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港