返回
顶部

修改密码

Android红外摇控与remote.conf

+1

-1

收藏

+1

-1

点赞0

评论0

这几天在研究Amlogic的红外摇控,主要涉及到/system/etc/remote.conf和/system/usr/keylayout/Vendor_0001_Product_0001.kl这两个文件,其实一般情况下只需要修改/system/etc/remote.conf这个文件就可以了,下面我们来介绍下remote.conf怎么修改.换摇控之后,你按键会出现这…
这几天在研究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_mode     0 :software mode  1 :hardware mode   
#   repeat_enable     0 :disable repeat 1 :enable repeat      
#  
#   factory_code      each device has it's unique factory code.   
#             pattern:custom_code(16bit)+index_code(16bit)  
#             examble: 0xff000001 = 0xff00(custom cod)  0001 (index)  
#  
#   release_delay     unit:ms.release will report from kernel to user layer after this period of time  
#             from press or repeat triggered.   
#  
#   debug_enable      0 :debug disable  1 :debug disable  
#  
# SW MODE:  
#   bit_count     how many bits in each frame       
#   tw_leader_act     time window for leader active   
#   tw_bit0       time window for bit0 time.  
#   tw_bit1       time window for bit1 time  
#   tw_repeat_leader  time window for repeat leader  
# REG  
#   reg_base_gen      set value for PREG_IR_DEC_BASE_GEN      
#   reg_control   set value for PREG_IR_DEC_CONTROL  
#   reg_leader_act    set value for PREG_IR_DEC_LEADER_ACTIVE  
#   reg_leader_idle   set value for PREG_IR_DEC_LEADER_IDLE  
#   reg_repeat_leader set value for PREG_IR_DEC_REPEAT_IDLE  
#   reg_bit0_time     set 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 399   GRAVE  
key 1     BACK  
key 2     1  
key 3     2  
key 4     3  
key 5     4  
key 6     5  
key 7     6  
key 8     7  
key 9     8  
key 10    9  
key 11    0  
key 15    BACK  
key 158   BACK  
key 58    SOFT_RIGHT  
key 107   ENDCALL  
key 62    ENDCALL  
key 139    MENU  
key 125    MENU  
key 60    NOTIFICATION  
key 127   SEARCH  
key 217   SEARCH  
key 228   POUND  
key 227   STAR  
key 231   CALL  
key 61    CALL  
key 97    DPAD_CENTER  
key 232   DPAD_CENTER  
key 108   DPAD_DOWN  
key 103   DPAD_UP  
key 102   HOME  
key 105   DPAD_LEFT  
key 106   DPAD_RIGHT  
key 115   VOLUME_UP  
key 114   VOLUME_DOWN  
key 104   VOLUME_UP  
key 109   VOLUME_DOWN  
key 212   CAMERA  
  
key 16    Q  
key 17    W  
key 18    E  
key 19    R  
key 20    T  
key 21    Y  
key 22    U  
key 23    I  
key 24    O  
key 25    P  
key 26    LEFT_BRACKET  
key 27    RIGHT_BRACKET  
key 43    BACKSLASH  
  
key 30    A  
key 31    S  
key 32    D  
key 33    F  
key 34    G  
key 35    H  
key 36    J  
key 37    K  
key 38    L  
key 39    SEMICOLON  
key 40    APOSTROPHE  
key 14    DEL  
  
key 44    Z  
key 45    X  
key 46    C  
key 47    V  
key 48    B  
key 49    N  
key 50    M  
key 51    COMMA  
key 52    PERIOD  
key 53    SLASH  
key 28    ENTER  
  
key 56    ALT_LEFT  
key 100   ALT_RIGHT  
key 42    SHIFT_LEFT  
key 54    SHIFT_RIGHT  
#key 15    TAB  
key 57    SPACE  
key 70    EXPLORER  
key 155   ENVELOPE  
  
key 12    MINUS  
key 13    EQUALS  
key 215   AT  
key 119   MEDIA_PLAY_PAUSE  
key 122   MEDIA_PREVIOUS  
key 123   MEDIA_NEXT  
key 120   MEDIA_FAST_FORWARD  
key 121   MEDIA_REWIND  
key 116   POWER WAKE  
key 113   VOLUME_MUTE  
key 128   MEDIA_STOP  
key 130   ZOOM_IN  
key 131   ZOOM_OUT  
key 133   TAB  
key 140   F10  
里面有一个:
[java] 
key 108   DPAD_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_mode     0 :software mode  1 :hardware mode   
#   repeat_enable     0 :disable repeat 1 :enable repeat      
#  
#   factory_code      each device has it's unique factory code.   
#             pattern:custom_code(16bit)+index_code(16bit)  
#             examble: 0xff000001 = 0xff00(custom cod)  0001 (index)  
#  
#   release_delay     unit:ms.release will report from kernel to user layer after this period of time  
#             from press or repeat triggered.   
#  
#   debug_enable      0 :debug disable  1 :debug disable  
#  
# SW MODE:  
#   bit_count     how many bits in each frame       
#   tw_leader_act     time window for leader active   
#   tw_bit0       time window for bit0 time.  
#   tw_bit1       time window for bit1 time  
#   tw_repeat_leader  time window for repeat leader  
# REG  
#   reg_base_gen      set value for PREG_IR_DEC_BASE_GEN      
#   reg_control   set value for PREG_IR_DEC_CONTROL  
#   reg_leader_act    set value for PREG_IR_DEC_LEADER_ACTIVE  
#   reg_leader_idle   set value for PREG_IR_DEC_LEADER_IDLE  
#   reg_repeat_leader set value for PREG_IR_DEC_REPEAT_IDLE  
#   reg_bit0_time     set 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里面这些的详细说明,我这里就不作说明,我就说下这些数据怎么来的,不知道有没有说清楚。
 

扫一扫在手机打开

评论
已有0条评论
0/150
提交
热门评论
相关推荐
Android蓝牙开发
  • 近场通信
  • 2022-05-20 18:30
  • 5 0 0
+1
android 蓝牙分析
  • 近场通信
  • 2022-05-20 18:30
  • 10 0 0
+1
android4.0蓝牙使能的详细解析
  • 近场通信
  • 2022-05-20 18:30
  • 2 0 0
+1
Android 蓝牙API 之 BluetoothAdapter 类
  • 近场通信
  • 2022-05-20 18:30
  • 1 0 0
+1
android蓝牙源码分析
  • 近场通信
  • 2022-05-20 18:30
  • 5 0 0
+1
今日要闻
换一批
热点排行