首頁 收藏 QQ群
 網站導航

ZNDS智能電視網 推薦當貝市場

TV應用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計算器

綜合交流 / 評測 / 活動區(qū)

交流區(qū) | 測硬件 | 網站活動 | Z幣中心

新手入門 / 進階 / 社區(qū)互助

新手 | 你問我答 | 免費刷機救磚 | ROM固件

查看: 28298|回復: 26
上一主題 下一主題
[分享]

電視盒子紅外遙控器怎么適配 ?Amlogic盒子紅外遙控適配心得

  [復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 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

系統(tǒng)默認用的是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

這兩行作區(qū)分, 這兩個值都要和其他遙控器配置不同, 其中 factory_infcode 似乎是序號, 而factory_code是要跟遙控器按鍵產生的十六進制碼后4位一致的.

鍵位定義包含 key_begin, key_end 和 repeat_key_begin , repeat_key_end 兩部分, 這兩部分分別代表了"單擊"和"按住"對應的鍵功能, 如非特殊都可以設成一樣的.

簡單的說, 就是遙控器按鍵產生的十六進制碼被盒子接收器接收后, 通過remote.conf找到了對應的key number, 再通過kl文件, 找到了對應的function, 然后就產生了操作.

紅外遙控器鍵碼識別

如果一個遙控器按鍵無法識別, 或者已有的遙控器想修改鍵功能, 但是不知道鍵碼怎么辦?

首先你要有盒子的TTL環(huán)境, 這樣才能通過命令行與盒子交互, 理論上在安卓的Terminal APP中應該也可以的, 我還沒試過.

網上有些文章說的systemctl stop eventlircd, ir-keytable -t 這些命令并非每個盒子都有, 但是dmesg命令基本上都是會有的, 可以通過dmesg. 因為其工作機制, 在鍵碼能識別的時候, 是不會記錄日志的, 所以要先將remote.conf或remote1.conf更名重啟, 然后試試按遙控器, 再執(zhí)行 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會不斷產生新的系統(tǒng)消息, 對記錄也產生干擾, 所以在操作的時候, 可以一次性按順序按下七八個按鍵, 例如 開機, 后退, 上下左右中, 再立即命令行執(zhí)行 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詳細分區(qū)表及救磚恢復指南


上一篇:求助!芝杜x9s強制卡刷z9s固件 USB不兼容 刷不回去了!
下一篇:如何修改遙控器鍵碼值?Android系統(tǒng)中自定義與修改遙控鍵值
沙發(fā)
發(fā)表于 2024-8-16 15:06 | 只看該作者 | 來自廣東
這個挺好,回頭我也試試
回復 支持 反對

使用道具 舉報

板凳
發(fā)表于 2024-8-16 15:25 | 只看該作者 | 來自浙江
好東西,樓主請教魔百盒遙控主頁怎么改
回復 支持 反對

使用道具 舉報

地板
發(fā)表于 2024-8-16 16:11 | 只看該作者 | 來自浙江
樓主有些盒子好像沒有remote文件,怎么破
回復 支持 反對

使用道具 舉報

5#
發(fā)表于 2024-8-16 17:27 | 只看該作者 | 來自江蘇
謝謝分享
回復 支持 反對

使用道具 舉報

6#
發(fā)表于 2024-8-17 09:44 | 只看該作者 | 來自山東
謝謝分享。。。。
回復 支持 反對

使用道具 舉報

7#
發(fā)表于 2024-8-21 12:25 | 只看該作者 | 來自北京
感謝分享
回復 支持 反對

使用道具 舉報

8#
發(fā)表于 2024-9-5 13:59 | 只看該作者 | 來自福建

這個挺好,回頭我也試試
回復 支持 反對

使用道具 舉報

9#
發(fā)表于 2024-9-5 15:59 | 只看該作者 | 來自山東
DDDDDDDDDDDDD
回復 支持 反對

使用道具 舉報

10#
發(fā)表于 2024-9-5 16:00 | 只看該作者 | 來自山東
你好   :remote.conf  怎么 轉換成  remote.tab (安卓9)遙控碼
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

Archiver|新帖|標簽|軟件|Sitemap|ZNDS智能電視網 ( 蘇ICP備2023012627號 )

網絡信息服務信用承諾書 | 增值電信業(yè)務經營許可證:蘇B2-20221768 丨 蘇公網安備 32011402011373號

GMT+8, 2024-12-22 11:46 , Processed in 0.073180 second(s), 12 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報:report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

快速回復 返回頂部 返回列表