ZNDS智能电视网 推荐当贝市场

TV应用下载 / 资源分享区

软件下载 | 游戏 | 讨论 | 电视计算器

综合交流 / 评测 / 活动区

交流区 | 测硬件 | 网站活动 | Z币中心

新手入门 / 进阶 / 社区互助

新手 | 你问我答 | 免费刷机救砖 | ROM固件

查看: 31787|回复: 29
上一主题 下一主题
[分享]

电视盒子红外遥控器怎么适配 ?Amlogic盒子红外遥控适配心得

  [复制链接]
跳转到指定楼层
楼主
发表于 2024-8-16 15:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 | 来自上海
前一阵做了个安卓6的固件, 在R3300L和Q7上跑的, 其他问题没有, 但是有用户反映原来的遥控器用不了了, 于是检查了一下遥控器配置, 顺便学习一下此类设备的红外遥控机制. 为了方便测试还上淘宝买了六个遥控器.

Amlogic电视盒子的红外遥控配置

相关的配置文件有

/system/usr/keylayout/Generic.kl

/system/usr/keylayout/Vendor_0001_Product_0001.kl

/system/etc/remote.conf 或 /system/etc/remote1.conf

Generic.kl文件

Generic key layout file for full alphabetic US English PC style external keyboards.
This file is intentionally very generic and is intended to support a broad rang of keyboards.
Do not edit the generic key layout to support a specific keyboard; instead, create a new key layout file with the required keyboard configuration.

这个文件的格式很简单, 每一行都是 key [Number] [Function], 按Number排序, 依次定义了每个Key Number对应的功能, 其内容为

  1. key 1     ESCAPE
  2. key 2     1
  3. key 3     2
  4. key 4     3
  5. key 5     4
  6. key 6     5
  7. key 7     6
  8. key 8     7
  9. key 9     8
  10. key 10    9
  11. key 11    0
  12. key 12    MINUS
  13. key 13    EQUALS
  14. key 14    DEL
  15. key 15    TAB
  16. ...
复制代码

Vendor_0001_Product_0001.kl

Vendor_xxx.kl 这个文件是基于Generic.kl 的厂商自定义键布局, 在其基础上修改了一些key的定义, 其内容为

  1. key 399   GRAVE
  2. key 1     BACK
  3. key 2     1
  4. key 3     2
  5. key 4     3
  6. key 5     4
  7. key 6     5
  8. key 7     6
  9. key 8     7
  10. key 9     8
  11. key 10    9
  12. key 11    0
  13. key 15    BACK
  14. key 158   BACK
  15. key 58    SOFT_RIGHT
  16. key 107   ENDCALL
  17. ...
复制代码

remote.conf 和 remote1.conf

系统默认用的是remote.conf, 但是有些固件使用的是remote1.conf. 如何判断呢? 我没找到合适的方法, 只能将其中一个文件更名后重启, 如果遥控器无法使用了, 就说明使用的是那个文件. remote.conf的格式会稍微复杂, 下面是一个完整的例子

  1. #*********************************************************************************************************
  2. # this file is configuration for each factory remote device
  3. #         work_mode          0 :software mode  1 :hardware mode
  4. #        repeat_enable          0 :disable repeat 1 :enable repeat
  5. #
  6. #        factory_code      each device has it's unique factory code.
  7. #                          pattern:custom_code(16bit)+index_code(16bit)
  8. #                          examble: 0xff000001 = 0xff00(custom cod)  0001 (index)
  9. #
  10. #        release_delay          unit:ms.release will report from kernel to user layer after this period of time
  11. #                          from press or repeat triggered.
  12. #
  13. #        debug_enable      0 :debug disable  1 :debug disable
  14. #
  15. # SW MODE:
  16. #        bit_count          how many bits in each frame
  17. #        tw_leader_act          time window for leader active
  18. #        tw_bit0                  time window for bit0 time.
  19. #        tw_bit1                  time window for bit1 time
  20. #        tw_repeat_leader  time window for repeat leader
  21. # REG                       
  22. #        reg_base_gen          set value for PREG_IR_DEC_BASE_GEN
  23. #        reg_control          set value for PREG_IR_DEC_CONTROL
  24. #        reg_leader_act          set value for PREG_IR_DEC_LEADER_ACTIVE
  25. #        reg_leader_idle          set value for PREG_IR_DEC_LEADER_IDLE
  26. #        reg_repeat_leader set value for PREG_IR_DEC_REPEAT_IDLE
  27. #        reg_bit0_time          set value for PREG_IR_DEC_BIT0_TIME
  28. #*************************************************************************************************************
  29. #amlogic NEC remote
  30. work_mode                  = 0
  31. repeat_enable = 1
  32. repeat_delay = 130
  33. repeat_peroid = 120
  34. release_delay   =       20
  35. debug_enable         = 1

  36. fn_key_scancode    = 0x15
  37. left_key_scancode  = 0x1c
  38. right_key_scancode = 0x48
  39. up_key_scancode    = 0x44
  40. down_key_scancode  = 0x1d
  41. ok_key_scancode    = 0x1e   
  42. pageup_key_scancode = 0x04
  43. pagedown_key_scancode = 0x1b

  44. custom_begin
  45.   factory_infcode = 0
  46.   factory_code        = 0xdd220001
  47. fn_key_scancode    = 0x15
  48. left_key_scancode  = 0x99
  49. right_key_scancode = 0xc1
  50. up_key_scancode    = 0xca
  51. down_key_scancode  = 0xd2
  52. ok_key_scancode    = 0xce
  53. pageup_key_scancode = 0xdd
  54. pagedown_key_scancode = 0x8c
  55.   key_begin
  56.     0xdc 116      ;STB_POWER
  57.     0x9c 113      ;VOLUME_MUTE
  58.     0x8d 150      ;SETTINGS
  59.     #0xcd 141      ;RED     F6
  60.     #0x91 142      ;GREEN   F7
  61.     #0x83 143      ;YELLOW  F8
  62.     #0xc3 144      ;BLUE    F9
  63.     0x88 102      ;HOME
  64.     0x95 15       ;BACK
  65.     0xc5 145      ;HELP F1
  66.     0x82 125      ;MENU
  67.     0x99 105      ;DPAD_LEFT
  68.     0xca 103      ;DPAD_UP
  69.     0xc1 106      ;DPAD_RIGHT
  70.     0xd2 108      ;DPAD_DOWN
  71.     0xce 97       ;DPAD_CENTER
  72.     0x80 104      ;VOLUME_UP
  73.     0x81 109      ;VOLUME_DOWN
  74.     0xdd  92      ;PAGE_UP
  75.     0x8c  93      ;PAGE_DOWN
  76.     0x85 166      ;CHANNEL_UP
  77.     0x86 167      ;CHANNEL_DOWN
  78.     0x89 121      ;MEDIA_REWIND
  79.     0x84 120      ;MEDIA_FAST_FORWARD
  80.     0xd9 119      ;MEDIA_PLAY_PAUSE
  81.     0x96 128      ;MEDIA_STOP
  82.     0x87 11       ;0
  83.     0x92 2        ;1
  84.     0x93 3        ;2
  85.     0xcc 4        ;3
  86.     0x8e 5        ;4
  87.     0x8f 6        ;5
  88.     0xc8 7        ;6
  89.     0x8a 8        ;7
  90.     0x8b 9        ;8
  91.     0xc4 10       ;9
  92.     0xda 228      ;POUND#
  93.   key_end
  94.   repeat_key_begin
  95.     0xdc 116      ;STB_POWER
  96.     0x9c 113      ;VOLUME_MUTE
  97.     0x8d 150      ;SETTINGS
  98.     #0xcd 141      ;RED     F6
  99.     #0x91 142      ;GREEN   F7
  100.     #0x83 143      ;YELLOW  F8
  101.     #0xc3 144      ;BLUE    F9
  102.     0x88 102      ;HOME
  103.     0x95 15       ;BACK
  104.     0xc5 145      ;HELP F1
  105.     0x82 125      ;MENU
  106.     0x99 105      ;DPAD_LEFT
  107.     0xca 103      ;DPAD_UP
  108.     0xc1 106      ;DPAD_RIGHT
  109.     0xd2 108      ;DPAD_DOWN
  110.     0xce 97       ;DPAD_CENTER
  111.     0x80 104      ;VOLUME_UP
  112.     0x81 109      ;VOLUME_DOWN
  113.     0xdd  92      ;PAGE_UP
  114.     0x8c  93      ;PAGE_DOWN
  115.     0x85 166      ;CHANNEL_UP
  116.     0x86 167      ;CHANNEL_DOWN
  117.     0x89 121      ;MEDIA_REWIND
  118.     0x84 120      ;MEDIA_FAST_FORWARD
  119.     0xd9 119      ;MEDIA_PLAY_PAUSE
  120.     0x96 128      ;MEDIA_STOP
  121.     0x87 11       ;0
  122.     0x92 2        ;1
  123.     0x93 3        ;2
  124.     0xcc 4        ;3
  125.     0x8e 5        ;4
  126.     0x8f 6        ;5
  127.     0xc8 7        ;6
  128.     0x8a 8        ;7
  129.     0x8b 9        ;8
  130.     0xc4 10       ;9
  131.     0xda 228      ;POUND#
  132.   repeat_key_end
  133. custom_end                  
复制代码


在头部注释部分, 已经对文件的内容作了说明, 在注释部分之外

首先是 #amlogic NEC remote , 这行固定保留

然后是全局参数配置,

然后是每个遥控器的配置, 以 custom_begin 开始, 以 custom_end 结束, 可以有多个遥控器配置共存,

每个遥控器配置以

factory_infcode = 0
factory_code = 0xdd220001

这两行作区分, 这两个值都要和其他遥控器配置不同, 其中 factory_infcode 似乎是序号, 而factory_code是要跟遥控器按键产生的十六进制码后4位一致的.

键位定义包含 key_begin, key_end 和 repeat_key_begin , repeat_key_end 两部分, 这两部分分别代表了"单击"和"按住"对应的键功能, 如非特殊都可以设成一样的.

简单的说, 就是遥控器按键产生的十六进制码被盒子接收器接收后, 通过remote.conf找到了对应的key number, 再通过kl文件, 找到了对应的function, 然后就产生了操作.

红外遥控器键码识别

如果一个遥控器按键无法识别, 或者已有的遥控器想修改键功能, 但是不知道键码怎么办?

首先你要有盒子的TTL环境, 这样才能通过命令行与盒子交互, 理论上在安卓的Terminal APP中应该也可以的, 我还没试过.

网上有些文章说的systemctl stop eventlircd, ir-keytable -t 这些命令并非每个盒子都有, 但是dmesg命令基本上都是会有的, 可以通过dmesg. 因为其工作机制, 在键码能识别的时候, 是不会记录日志的, 所以要先将remote.conf或remote1.conf更名重启, 然后试试按遥控器, 再执行 dmesg -s 5000, 看看是不是会出现这样的日志记录

[ 5095.872000] Wrong custom code is 0xef109c21
[ 5097.694000] Wrong custom code is 0xee119c21

这就是记录下来的键码. 键码一共8位, 前2位是校验用的, 第3 - 4位是需要写在remote.conf里的键码, 第5 - 8位是设备码, 要跟factory_code的前4位一致.

记录键码的一些操作技巧: 首先四周不能有其他遥控器的干扰, 例如旁边有人在看电视按遥控器, 这样不行. 其次, 因为dmesg会不断产生新的系统消息, 对记录也产生干扰, 所以在操作的时候, 可以一次性按顺序按下七八个按键, 例如 开机, 后退, 上下左右中, 再立即命令行执行 dmesg -s 5000, 这时候最新的记录里面, 这7个键码就基本上是在一块的, 方便提取.

这样把遥控器的键码都记下来, 然后编辑remote.conf, 让盒子能识别.

在编辑remote.conf时, 可以先将kl里的 key number - > function 先列出来, 前面打上#, 这样方便对应, 例如

  1. custom_begin
  2.     factory_infcode = 7
  3.     factory_code    = 0xff000001

  4.   key_begin
  5.         #1        ;BACK
  6.     0x0f 2        ;1
  7.     0x11 3        ;2
  8.     0x12 4        ;3
  9.     0x4c 5        ;4
  10.     0x58 6        ;5
  11.     0x1b 7        ;6
  12.     0x17 8        ;7
  13.     0x4d 9        ;8
  14.     0x0a 10       ;9
  15.     0x1d 11       ;0
  16.         #12       ;MINUS
  17.         #13       ;EQUALS
  18.         #14       ;DEL
  19.         #15       ;BACK
  20.         #16       ;Q
  21.         #17       ;W
  22.         #18       ;E
  23.         #19       ;R
  24.         #20       ;T
  25.         #21       ;Y
  26.         #22       ;U                 
  27.         #23       ;I
  28.         #24       ;O
  29.         #25       ;P
  30.         #26       ;LEFT_BRACKET
  31.         #27       ;RIGHT_BRACKET
  32.         #28       ;ENTER      
  33.         #30       ;A
  34.         #31       ;S
  35.         #32       ;D
  36.         #33       ;F
  37.         #34       ;G
  38.         #35       ;H
  39.         #36       ;J
  40.         #37       ;K
  41.         #38       ;L
  42.         #39       ;SEMICOLON
  43.         #40       ;APOSTROPHE
  44.         #42       ;SHIFT_LEFT
  45.         #43       ;BACKSLASH
  46.         #44       ;Z
  47.         #45       ;X
  48.         #46       ;C
  49.         #47       ;V
  50.         #48       ;B
  51.         #49       ;N
  52.         #50       ;M
  53.         #51       ;COMMA
  54.         #52       ;PERIOD.
  55.         #53       ;SLASH
  56.     0x55 97       ;DPAD_CENTER
  57.     0x4e 102      ;HOME   
  58.     0x46 103      ;DPAD_UP
  59.     0x47 105      ;DPAD_LEFT
  60.     0x15 106      ;DPAD_RIGHT
  61.     0x16 108      ;DPAD_DOWN
  62.     0x10 114      ;VOLUME_DOWN
  63.     0x14 115      ;VOLUME_UP
  64.     0x18 116      ;POWER        WAKE
  65.     0x4f 141      ;SETTINGS
  66.         #113      ;MUTE
  67.         #119      ;MEDIA_PLAY_PAUSE
  68.         #120      ;MEDIA_FAST_FORWARD
  69.         #121      ;MEDIA_REWIND
  70.         #122      ;MEDIA_PREVIOUS
  71.         #123      ;MEDIA_NEXT
  72.         #125      ;MENU
  73.     0x04 139      ;MENU
  74.     0x40 158      ;BACK
  75.     0x1c 227      ;STAR*
  76.     0x1e 228      ;POUND#
  77.   key_end

  78.   repeat_key_begin
  79.         #1        ;BACK
  80.     0x0f 2        ;1
  81.     0x11 3        ;2
  82.     0x12 4        ;3
  83.     0x4c 5        ;4
  84.     0x58 6        ;5
  85.     0x1b 7        ;6
  86.     0x17 8        ;7
  87.     0x4d 9        ;8
  88.     0x0a 10       ;9
  89.     0x1d 11       ;0
  90.         #12       ;MINUS
  91.         #13       ;EQUALS
  92.         #14       ;DEL
  93.         #15       ;BACK
  94.         #16       ;Q
  95.         #17       ;W
  96.         #18       ;E
  97.         #19       ;R
  98.         #20       ;T
  99.         #21       ;Y
  100.         #22       ;U                 
  101.         #23       ;I
  102.         #24       ;O
  103.         #25       ;P
  104.         #26       ;LEFT_BRACKET
  105.         #27       ;RIGHT_BRACKET
  106.         #28       ;ENTER      
  107.         #30       ;A
  108.         #31       ;S
  109.         #32       ;D
  110.         #33       ;F
  111.         #34       ;G
  112.         #35       ;H
  113.         #36       ;J
  114.         #37       ;K
  115.         #38       ;L
  116.         #39       ;SEMICOLON
  117.         #40       ;APOSTROPHE
  118.         #42       ;SHIFT_LEFT
  119.         #43       ;BACKSLASH
  120.         #44       ;Z
  121.         #45       ;X
  122.         #46       ;C
  123.         #47       ;V
  124.         #48       ;B
  125.         #49       ;N
  126.         #50       ;M
  127.         #51       ;COMMA
  128.         #52       ;PERIOD.
  129.         #53       ;SLASH
  130.     0x55 97       ;DPAD_CENTER
  131.     0x4e 102      ;HOME   
  132.     0x46 103      ;DPAD_UP
  133.     0x47 105      ;DPAD_LEFT
  134.     0x15 106      ;DPAD_RIGHT
  135.     0x16 108      ;DPAD_DOWN
  136.     0x10 114      ;VOLUME_DOWN
  137.     0x14 115      ;VOLUME_UP
  138.     0x18 116      ;POWER        WAKE
  139.     0x4f 141      ;SETTINGS
  140.         #113      ;MUTE
  141.         #119      ;MEDIA_PLAY_PAUSE
  142.         #120      ;MEDIA_FAST_FORWARD
  143.         #121      ;MEDIA_REWIND
  144.         #122      ;MEDIA_PREVIOUS
  145.         #123      ;MEDIA_NEXT
  146.         #125      ;MENU
  147.     0x04 139      ;MENU
  148.     0x40 158      ;BACK
  149.     0x1c 227      ;STAR*
  150.     0x1e 228      ;POUND#
  151.   repeat_key_end
  152. custom_end
复制代码

游客,如果您要查看本帖隐藏内容请回复



相关阅读:
朝歌机顶盒怎么刷机?朝歌机顶盒管理工具swstbmgr
华数2100KA android 假关机 原生点心云固件(带恢复出厂功....
魔百和M301H_CW2详细分区表及救砖恢复指南


上一篇:求助!芝杜x9s强制卡刷z9s固件 USB不兼容 刷不回去了!
下一篇:如何修改遥控器键码值?Android系统中自定义与修改遥控键值
沙发
发表于 2024-8-16 15:06 | 只看该作者 | 来自广东
这个挺好,回头我也试试
回复 支持 反对

使用道具 举报

板凳
发表于 2024-8-16 15:25 | 只看该作者 | 来自浙江
好东西,楼主请教魔百盒遥控主页怎么改
回复 支持 反对

使用道具 举报

地板
发表于 2024-8-16 16:11 | 只看该作者 | 来自浙江
楼主有些盒子好像没有remote文件,怎么破
回复 支持 反对

使用道具 举报

5#
发表于 2024-8-16 17:27 | 只看该作者 | 来自江苏
谢谢分享
回复 支持 反对

使用道具 举报

6#
发表于 2024-8-17 09:44 | 只看该作者 | 来自山东
谢谢分享。。。。
回复 支持 反对

使用道具 举报

7#
发表于 2024-8-21 12:25 | 只看该作者 | 来自北京
感谢分享
回复 支持 反对

使用道具 举报

8#
发表于 2024-9-5 13:59 | 只看该作者 | 来自福建

这个挺好,回头我也试试
回复 支持 反对

使用道具 举报

9#
发表于 2024-9-5 15:59 | 只看该作者 | 来自山东
DDDDDDDDDDDDD
回复 支持 反对

使用道具 举报

10#
发表于 2024-9-5 16:00 | 只看该作者 | 来自山东
你好   :remote.conf  怎么 转换成  remote.tab (安卓9)遥控码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|新帖|标签|软件|Sitemap|ZNDS智能电视网 ( 苏ICP备2023012627号 )

网络信息服务信用承诺书 | 增值电信业务经营许可证:苏B2-20221768 丨 苏公网安备 32011402011373号

GMT+8, 2025-1-15 15:23 , Processed in 0.077317 second(s), 12 queries , Redis On.

Powered by Discuz!

监督举报:report#znds.com (请将#替换为@)

© 2007-2025 ZNDS.Com

快速回复 返回顶部 返回列表