首頁(yè) 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場(chǎng)

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

軟件下載 | 游戲 | 討論 | 電視計(jì)算器

綜合交流 / 評(píng)測(cè) / 活動(dòng)區(qū)

交流區(qū) | 測(cè)硬件 | 網(wǎng)站活動(dòng) | Z幣中心

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

新手 | 你問(wèn)我答 | 免費(fèi)刷機(jī)救磚 | ROM固件

查看: 21635|回復(fù): 21
上一主題 下一主題
[分享]

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

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-8-16 15:05 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式 | 來(lái)自上海
前一陣做了個(gè)安卓6的固件, 在R3300L和Q7上跑的, 其他問(wèn)題沒有, 但是有用戶反映原來(lái)的遙控器用不了了, 于是檢查了一下遙控器配置, 順便學(xué)習(xí)一下此類設(shè)備的紅外遙控機(jī)制. 為了方便測(cè)試還上淘寶買了六個(gè)遙控器.

Amlogic電視盒子的紅外遙控配置

相關(guān)的配置文件有

/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.

這個(gè)文件的格式很簡(jiǎn)單, 每一行都是 key [Number] [Function], 按Number排序, 依次定義了每個(gè)Key Number對(duì)應(yīng)的功能, 其內(nèi)容為

  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. ...
復(fù)制代碼

Vendor_0001_Product_0001.kl

Vendor_xxx.kl 這個(gè)文件是基于Generic.kl 的廠商自定義鍵布局, 在其基礎(chǔ)上修改了一些key的定義, 其內(nèi)容為

  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. ...
復(fù)制代碼

remote.conf 和 remote1.conf

系統(tǒng)默認(rèn)用的是remote.conf, 但是有些固件使用的是remote1.conf. 如何判斷呢? 我沒找到合適的方法, 只能將其中一個(gè)文件更名后重啟, 如果遙控器無(wú)法使用了, 就說(shuō)明使用的是那個(gè)文件. remote.conf的格式會(huì)稍微復(fù)雜, 下面是一個(gè)完整的例子

  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                  
復(fù)制代碼


在頭部注釋部分, 已經(jīng)對(duì)文件的內(nèi)容作了說(shuō)明, 在注釋部分之外

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

然后是全局參數(shù)配置,

然后是每個(gè)遙控器的配置, 以 custom_begin 開始, 以 custom_end 結(jié)束, 可以有多個(gè)遙控器配置共存,

每個(gè)遙控器配置以

factory_infcode = 0
factory_code = 0xdd220001

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

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

簡(jiǎn)單的說(shuō), 就是遙控器按鍵產(chǎn)生的十六進(jìn)制碼被盒子接收器接收后, 通過(guò)remote.conf找到了對(duì)應(yīng)的key number, 再通過(guò)kl文件, 找到了對(duì)應(yīng)的function, 然后就產(chǎn)生了操作.

紅外遙控器鍵碼識(shí)別

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

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

網(wǎng)上有些文章說(shuō)的systemctl stop eventlircd, ir-keytable -t 這些命令并非每個(gè)盒子都有, 但是dmesg命令基本上都是會(huì)有的, 可以通過(guò)dmesg. 因?yàn)槠涔ぷ鳈C(jī)制, 在鍵碼能識(shí)別的時(shí)候, 是不會(huì)記錄日志的, 所以要先將remote.conf或remote1.conf更名重啟, 然后試試按遙控器, 再執(zhí)行 dmesg -s 5000, 看看是不是會(huì)出現(xiàn)這樣的日志記錄

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

這就是記錄下來(lái)的鍵碼. 鍵碼一共8位, 前2位是校驗(yàn)用的, 第3 - 4位是需要寫在remote.conf里的鍵碼, 第5 - 8位是設(shè)備碼, 要跟factory_code的前4位一致.

記錄鍵碼的一些操作技巧: 首先四周不能有其他遙控器的干擾, 例如旁邊有人在看電視按遙控器, 這樣不行. 其次, 因?yàn)閐mesg會(huì)不斷產(chǎn)生新的系統(tǒng)消息, 對(duì)記錄也產(chǎn)生干擾, 所以在操作的時(shí)候, 可以一次性按順序按下七八個(gè)按鍵, 例如 開機(jī), 后退, 上下左右中, 再立即命令行執(zhí)行 dmesg -s 5000, 這時(shí)候最新的記錄里面, 這7個(gè)鍵碼就基本上是在一塊的, 方便提取.

這樣把遙控器的鍵碼都記下來(lái), 然后編輯remote.conf, 讓盒子能識(shí)別.

在編輯remote.conf時(shí), 可以先將kl里的 key number - > function 先列出來(lái), 前面打上#, 這樣方便對(duì)應(yīng), 例如

  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
復(fù)制代碼

游客,如果您要查看本帖隱藏內(nèi)容請(qǐng)回復(fù)



相關(guān)閱讀:
朝歌機(jī)頂盒怎么刷機(jī)?朝歌機(jī)頂盒管理工具swstbmgr
華數(shù)2100KA android 假關(guān)機(jī) 原生點(diǎn)心云固件(帶恢復(fù)出廠功....
魔百和M301H_CW2詳細(xì)分區(qū)表及救磚恢復(fù)指南


上一篇:求助!芝杜x9s強(qiáng)制卡刷z9s固件 USB不兼容 刷不回去了!
下一篇:如何修改遙控器鍵碼值?Android系統(tǒng)中自定義與修改遙控鍵值
沙發(fā)
發(fā)表于 2024-8-16 15:06 | 只看該作者 | 來(lái)自廣東
這個(gè)挺好,回頭我也試試
板凳
發(fā)表于 2024-8-16 15:25 | 只看該作者 | 來(lái)自浙江
好東西,樓主請(qǐng)教魔百盒遙控主頁(yè)怎么改
地板
發(fā)表于 2024-8-16 16:11 | 只看該作者 | 來(lái)自浙江
樓主有些盒子好像沒有remote文件,怎么破
5#
發(fā)表于 2024-8-16 17:27 | 只看該作者 | 來(lái)自江蘇
謝謝分享
6#
發(fā)表于 2024-8-17 09:44 | 只看該作者 | 來(lái)自山東
謝謝分享。。。。
7#
發(fā)表于 2024-8-21 12:25 | 只看該作者 | 來(lái)自北京
感謝分享
8#
發(fā)表于 2024-9-5 13:59 | 只看該作者 | 來(lái)自福建

這個(gè)挺好,回頭我也試試
9#
發(fā)表于 2024-9-5 15:59 | 只看該作者 | 來(lái)自山東
DDDDDDDDDDDDD
10#
發(fā)表于 2024-9-5 16:00 | 只看該作者 | 來(lái)自山東
你好   :remote.conf  怎么 轉(zhuǎn)換成  remote.tab (安卓9)遙控碼

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號(hào) )

網(wǎng)絡(luò)信息服務(wù)信用承諾書 | 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號(hào)

GMT+8, 2024-11-1 18:36 , Processed in 0.077349 second(s), 12 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報(bào):report#znds.com (請(qǐng)將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表