首页 / 资讯中心 / 文章详情

CoreELEC遥控器失灵排查:红外抓码与键值映射配置

CoreELEC遥控器失灵排查:红外抓码与键值映射配置 ★ FEATURED ARTICLE
折腾过几台运营商标配的定制盒子之后我发现一个挺有意思的规律系统刷得再顺、解码再流畅最后把人卡住的十有八九是遥控器。CoreELEC 这套轻量媒体系统跑在晶晨芯片的盒子上确实省资源开机快、占用低但它默认的按键映射表基本是按通用开发板配的跟魔百盒这类定制盒子原厂遥控器的码值对不上于是就出现了装完系统能亮屏、插上鼠标能操作、拿起遥控器却像块砖的尴尬场面。这篇内容聊的就是怎么把这块“砖”救回来从判断遥控器类型、确认系统当前在用哪套红外驱动到抓码、写配置、热加载验证、排查按键失灵一条线走完。适合已经刷好 CoreELEC、能通过 SSH 或键盘鼠标进入系统但遥控器按键错乱或者干脆没反应的人看也适合手里有一堆不同型号盒子、想整理一套通用配置方法的人参考。全程只讲思路和可复现的操作不涉及任何需要特殊网络环境的东西。1. 先分清手里的遥控器属于哪一类动手改配置之前最容易被跳过、也最容易导致后面白忙活的一步就是搞清楚你手里这个遥控器到底是怎么跟盒子通信的。我见过不少人对着一个蓝牙遥控器猛改remote.conf改了两小时没反应最后发现根本没配对。方向错了后面的努力全是无效功。1.1 红外、蓝牙、2.4G 三种遥控器的判定方法市面上配给这类盒子的遥控器通信方式基本就三种判断方法其实很简单不需要拆机。红外遥控器是最常见的一种。特征是方向性强你得大致对着盒子正面才能按得动手挡住就失灵。有个几乎零成本的验证办法把手机摄像头打开镜头对准遥控器前端那个深色的小窗口然后按任意键。红外发射管工作时人眼看不见但手机 CMOS 能拍到明显的紫色或白色闪烁。拍得到闪烁就是红外拍不到基本可以排除。另外红外遥控器一般需要两节七号电池后盖能直接抠开。蓝牙遥控器通常出现在带语音功能的型号上按键少、外形简洁有的还带一个麦克风孔。它的特点是完全不需要对准盒子隔着沙发、塞进兜里都能用但首次使用必须配对。如果你拿到手按任何键盒子都没反应而盒子上又确实有蓝牙模块那大概率就是没配对。2.4G 无线遥控器的特征是盒子侧面或背面插着一个小 USB 接收器遥控器本身可能还带一个 USB 充电口。这种遥控器在系统里表现为一个标准的 USB HID 键盘设备插上就能用一部分按键但按键对应关系经常是乱的因为厂家按安卓的键值定义写死了。类型判断特征系统内表现形式配置入口红外需对准、手机摄像头可见闪烁/dev/input/eventX设备名含 ir 或 remoteremote.conf 或 rc_maps.cfg蓝牙无需对准、首次需配对、可能带麦克风配对后出现 HID 输入设备系统蓝牙设置界面2.4G盒子插着 USB 接收器标准 USB 键盘设备Kodi keymaps 或 udev 规则注意有少数盒子同时内置红外接收头和蓝牙模块原厂配的是红外遥控器但用户自己换成了蓝牙的。这种情况下两套配置都要处理好别只顾着改红外。1.2 登录系统后三行命令确认当前驱动状态确定是红外遥控器之后下一步不是急着改文件而是先问系统一句你现在到底在用哪个驱动接管红外接收头这一步决定了你后面该改remote.conf还是rc_maps.cfg改错文件是新手最容易踩的坑。通过 SSH 登进盒子CoreELEC 的默认账户是root密码在新版本里需要先在系统的 CoreELEC 设置里开启 SSH 服务并查看。登进去之后依次跑这三条dmesg | grep -iE amremote|meson-ir|rc0|remote ls /sys/class/rc/ cat /proc/bus/input/devices第一条看内核日志重点找amremote或者meson-ir这两个关键字。如果日志里反复出现amremote相关的初始化信息说明系统走的是晶晨自家的红外驱动如果出现的是meson-ir和rc0那就是走了内核标准的红外子系统。第二条命令更直接。如果/sys/class/rc/目录下存在rc0这样的节点说明标准红外子系统在工作这套体系下ir-keytable工具是可以用的。如果这个目录压根不存在或者为空那基本就是amremote在管事儿。第三条命令看输入设备列表找设备名里带ir、remote、amremote、meson-ir字样的条目记下它对应的event编号后面调试的时候会用到。三条命令跑完你对当前状态应该就有底了。1.3 动手前的准备与备份真开始改之前有几个准备动作建议做完能省掉后面不少返工。第一确认你有一条不依赖遥控器的操作通道。SSH 是最稳的实在不行插个 USB 键盘鼠标也能救急。因为一旦配置写错遥控器可能彻底失灵这时候如果没有备用输入方式就只能拆机短接或者重刷了代价太大。第二把现有的配置文件先备份一份。CoreELEC 的用户配置都在/storage/.config/下面要备份的就是这个目录里的remote.conf和rc_maps.cfg如果存在的话cp /storage/.config/remote.conf /storage/.config/remote.conf.bak cp /storage/.config/rc_maps.cfg /storage/.config/rc_maps.cfg.bak第三装一下 system-tools 这个官方插件。它里面带了evtest、ir-keytable等一堆调试工具后面抓码会反复用到。在 Kodi 界面里进插件库找就行装完之后 SSH 里就能直接调用了。第四准备一个纯文本编辑器改配置文件。这里要特别强调千万别用 Windows 记事本直接改完再传上去。Windows 的换行是 CRLFLinux 认的是 LF带 CRLF 的配置文件在某些解析器里会直接读失败而且报错信息极其隐晦你可能查半天都查不出问题在哪。用 VS Code、Notepad 这类工具改完记得把换行符切成 LF编码存成无 BOM 的 UTF-8。2. 两套按键映射体系amremote 与 meson-irCoreELEC 在晶晨平台的盒子上红外这块其实保留了两套并行的方案。这两套方案的配置文件格式、生效方式、能力边界都不一样很多人配不成功根本原因就是把两套东西混着用了。2.1 remote.conf 是什么为什么它更值得优先尝试remote.conf是晶晨自家红外驱动的配置文件对应的是amremote这个内核模块。它的位置在/storage/.config/remote.conf系统启动时会读取这个文件把里面的码值表注册进驱动。我个人的习惯是优先试这条路原因有三个。第一它工作在驱动层从红外信号解调到键值上报全在驱动里完成延迟低长按重复的响应也更跟手。第二它对开机唤醒的支持更完整盒子关机或者待机状态下红外接收头需要保持供电并识别特定码值才能唤醒这套机制在amremote体系里是有官方支持的。第三格式简单一张key_begin到key_end的码值表左边是遥控器发出来的扫描码右边是 Linux 输入子系统的键值一对一没有中间层。它的短板也很明显调试手段少。这套驱动不像标准红外子系统那样有ir-keytable这种成熟的抓码工具出了问题只能靠dmesg看日志信息量有限。所以如果remote.conf怎么改都不生效别死磕转头试试第二套。2.2 rc_maps.cfg keymap 的路子适合什么情况第二套方案走的是 Linux 内核标准的红外遥控子系统也就是rc-core。配置分两个文件/storage/.config/rc_maps.cfg指定用哪张码表/storage/.config/rc_keymaps/目录下放具体的码表文件。rc_maps.cfg的格式是一行一条规则三列用空格或制表符隔开依次是驱动名、码表匹配规则、码表文件名# driver table keytable meson-ir * my_box第一列写meson-ir第二列写*表示匹配所有第三列my_box对应/storage/.config/rc_keymaps/my_box这个文件文件名不带路径。这套方案最大的优势就是可调试性。ir-keytable这个工具可以实时把收到的红外扫描码打印到终端上你不用猜、不用翻日志按一下键屏幕上就出来一行码值抓码效率比第一套高一个数量级。另外它支持多协议并行识别NEC、RC5、RC6 可以同时开对于那些不确定协议的老遥控器特别友好。代价是唤醒支持弱一些而且依赖rc0设备节点存在。有些定制盒子的红外接收头走的是晶晨自己的通路标准子系统根本挂不上这种情况下rc_maps.cfg写得再对也没用。2.3 两套体系同时生效时的冲突表现与处理理论上同一时刻只有一个驱动能绑定红外接收硬件但实际排查中我确实遇到过两套配置都存在、表现却很诡异的情况按某个键能触发但延迟很高或者长按失灵、单击却正常又或者刚开机时好用播了会儿视频就不响应了。这种时候先用一条命令看模块加载情况lsmod | grep -iE amremote|meson如果两个模块都在列表里说明内核把两套都编进去了谁先抢到硬件谁说了算。这时候的处理原则很简单只改一个另一个的相关配置文件清空或删掉。我的做法是保留remote.conf把rc_maps.cfg里的规则注释掉避免两套规则互相干扰。还有一种更隐蔽的冲突remote.conf里配置了某个键Kodi 层的 keymap 里又把这个键重新映射了一遍结果就是你改了驱动层没效果因为真正决定键位行为的是上层。这个后面第 6 章会专门讲。提示排查阶段建议每次只改一个变量改完立刻验证。同时改三四个文件再重启出问题了你根本不知道是哪个改动导致的。3. 抓码把按键变成可读的数字配置的本质就是建立一张映射表遥控器按下某个键红外接收头发出一串编码你要告诉系统“这串编码等于电源键”。所以第一步永远是拿到那串编码也就是抓码。3.1 红外遥控抓码的三条路第一条路走标准红外子系统用ir-keytable。前提是/sys/class/rc/rc0存在。先看当前状态ir-keytable输出里会列出设备路径、驱动名、当前启用的协议以及已经加载的码表。接着做两件事先把现有码表清掉否则已有的映射会把扫描码直接翻译成键值你就看不到原始码了再开启测试模式ir-keytable -c -p NEC -t-c是清除当前码表-p NEC是只启用 NEC 协议不确定协议的话可以写-p all但输出会更杂-t是测试模式。这时候对着盒子按遥控器终端上会实时打印类似这样的内容Testing events. Please, press CTRL-C to abort. 1234.567890: lirc protocol(nec): scancode 0x4d 1234.567890: event type EV_MSC(0x04): scancode 0x4d 1234.567890: event type EV_KEY(0x01) key_down: KEY_OK(0x160)scancode后面那个十六进制数就是我们要的原始码。把每个键都按一遍记在纸上或者另开一个窗口记下来后面写码表直接用。第二条路走amremote体系看内核日志。这条路信息量少但不是完全没办法。先用一个不可能匹配的厂商码占位然后按遥控器看看驱动会不会把未匹配的扫描码打到日志里dmesg -c /dev/null # 此时按遥控器上的键 dmesg | tail -30有些内核版本会输出类似invalid custom code或者scancode 0x...的信息从中可以反推。如果一条都没有那这条路基本走不通直接看第三条。第三条路也是最省事的一条从原厂固件里捞现成的remote.conf。这类定制盒子出厂跑的安卓系统里/system/etc/remote.conf这个文件几乎必然存在因为原厂遥控器就是靠它工作的。把这个文件取出来把格式调整成 CoreELEC 认的样子成功率极高。取法有两种。如果盒子还保留着安卓系统并且能打开 USB 调试直接adb pull /system/etc/remote.conf就行。如果盒子已经刷成 CoreELEC 了那就去找对应型号的官方固件包解包之后在system分区里翻这个文件。同型号的盒子遥控器码值基本一致甚至同品牌不同型号之间也有很大概率通用因为厂家经常复用同一批遥控器方案。3.2 从原厂固件里“捡”一份现成的 remote.conf我实测下来这条路对新手最友好。原厂文件长这样不同型号会有差异factory_code 0xff000001 work_mode 0 repeat_enable 1 repeat_delay 130 repeat_peroid 120 release_delay 20 key_begin 0x11 116 0x54 115 0x53 114 key_end拿到之后要做的判断是右边的数字是不是 Linux 输入子系统的标准键值。原厂安卓用的键值体系跟 Linux 不完全一样有的文件右边写的是安卓的AKEYCODE_*数值这种就不能直接抄得换算。判断方法很简单谷歌一下常见键值116 是电源、115 是音量加、114 是音量减、103 是方向上、108 是方向下、105 是左、106 是右、28 是确认、158 是返回、102 是主页。如果你看到文件里右边大量出现这些熟悉的数字恭喜可以直接用。如果右边是一堆完全对不上的数字比如全是 2、3、4、5 这类小整数那多半是安卓键值需要一张对照表转换或者干脆只抄左边的扫描码右边的键值自己按功能重新填。3.3 蓝牙遥控器配对与 2.4G 接收器的处理这两类跟红外完全是两条技术路线混在一起讲容易乱单独说清楚。蓝牙遥控器的配置主要在配对环节。进 Kodi 界面找到 CoreELEC 设置里的蓝牙选项打开蓝牙让遥控器进入配对模式一般是同时长按两个键几秒指示灯快闪然后在列表里选中它配对。配对成功后用cat /proc/bus/input/devices应该能看到一个新的输入设备名字通常包含遥控器型号。配对之后如果按键映射不对处理方式和红外完全不同它已经是一个标准输入设备了你不需要抓码只需要在 Kodi 层重新映射键位具体做法见第 6 章。也有少数蓝牙遥控器配对后完全没反应那可能是协议版本或者 HID 描述符的问题这种基本无解换遥控器比折腾系统划算。2.4G 遥控器最简单插上 USB 接收器系统自动识别成键盘一部分按键立刻能用。剩下不能用的或者映射错的同样是走 Kodi 层的 keymap 调整。有一个小细节值得注意这类接收器插拔之后设备编号可能变化如果你写了依赖event编号的规则建议用 udev 规则按设备名做固定命名别写死编号。4. 写配置参数逐行拆解与实操示例码抓到了接下来就是把它写成系统认识的格式。这一章把两套配置文件的写法都过一遍重点讲清楚每个参数到底在干什么因为很多教程只给模板不讲原理导致换个盒子就懵。4.1 remote.conf 关键参数逐个说清楚一份完整的remote.conf大概长这样我按行解释factory_code 0xff000001 work_mode 0 repeat_enable 1 repeat_delay 130 repeat_peroid 120 release_delay 20 key_begin 0x11 116 0x54 115 0x53 114 0x50 103 0x10 108 0x51 105 0x12 106 0x55 28 0x13 158 0x14 102 key_endfactory_code是厂商码也可以理解成遥控器的身份标识。不同厂家、不同批次的遥控器这个值不一样写错了整张表都失效。这个值通常能从原厂文件里直接拿到拿不到的话就只能靠dmesg里未匹配时的输出反推或者干脆多试几个常见值。work_mode决定解码方式0 是软件解码1 是硬件解码。这里有个反直觉的点很多人以为硬件解码更准实际上不少盒子上work_mode1反而会导致部分按键识别不出来。我的建议是默认填 0出问题了再试 1。repeat_enable控制长按重复填 1 开启。这个必须开否则你在 Kodi 里按住方向键想快速翻列表结果只动一格。repeat_delay是首次重复的延迟单位毫秒。填 130 意味着按住键 130 毫秒后开始重复。填太小容易误触发连击填太大长按反应迟钝。repeat_peroid是重复周期也就是每次重复之间的间隔单位毫秒。注意这个参数的拼写是peroid而不是period这是晶晨驱动沿用了十几年的历史拼写错误你写成正确的period反而不生效。这个坑我踩过当时排查了半个多小时才发现是拼写问题。release_delay是松手后的延迟。这个值设得太小快速连按会丢键设得太大连按会变成延长按。20 到 50 之间比较稳妥。key_begin和key_end之间就是映射表每行两个值左边是抓到的扫描码十六进制右边是 Linux 输入键值十进制。中间用空格或制表符隔开行尾可以加#注释写上按键名称方便以后维护。常用键值整理成表照着填就行功能键值功能键值电源116确认28音量加115返回158音量减114主页102方向上103菜单139方向下108播放暂停164方向左105停止128方向右106下一曲1634.2 keymap 文件写法与 Kodi 键位对应表走meson-ir这条路的话码表文件的格式更简洁一行一个映射# table my_box, type: NEC 0x4d KEY_POWER 0x56 KEY_VOLUMEUP 0x16 KEY_VOLUMEDOWN 0x45 KEY_UP 0x15 KEY_DOWN 0x44 KEY_LEFT 0x14 KEY_RIGHT 0x40 KEY_OK 0x43 KEY_BACK 0x09 KEY_HOME左边是抓到的扫描码右边是键名键名来自内核的input-event-codes.h绝大多数发行版都支持用名字而不是数字可读性好很多。写完码表文件放到/storage/.config/rc_keymaps/my_box注意文件名不要带扩展名然后编辑/storage/.config/rc_maps.cfg加上那一行规则。两个文件都就位之后可以先不重启用命令直接加载测试ir-keytable -c -w /storage/.config/rc_keymaps/my_box这条命令是临时生效重启就没了正好用来验证码表写得对不对。如果按键正常再让它持久化——重启系统rc_maps.cfg会在启动阶段被读取并应用。键值和 Kodi 动作之间的对应关系官方有一套默认映射理解这套映射能帮你判断“为什么这个键按了没反应”。Kodi 会拦截一部分键值做全局处理比如KEY_HOME回到主页、KEY_BACK返回上一级、KEY_OK和KEY_ENTER当作确认、四个方向键控制焦点移动、KEY_PLAYPAUSE164控制播放暂停。视频播放界面下还会额外响应快进快退、字幕切换、音轨切换等。这意味着如果你把某个物理按键映射成了KEY_F1这种 Kodi 没有默认绑定的键值那它按下去就是没反应——不是配置错了是上层没给它安排活儿。碰到这种情况要么换一个更有意义的键值要么去 Kodi 层自己绑定后者在第 6 章讲。4.3 热加载与重启验证的正确姿势改配置最烦的就是每次都要重启好在两套体系都有热加载的办法。amremote这条路CoreELEC 里带了remotecfg这个工具可以直接重新加载配置不用重启remotecfg /storage/.config/remote.conf执行完直接按遥控器测试立刻能看到效果。如果命令报错说找不到文件检查一下路径和权限/storage/.config/下的文件属主应该是 root。meson-ir这条路就是前面提到的ir-keytable -c -w同样是即时生效。验证的时候建议按这个顺序来先测方向键和确认键这四个键决定你能不能操作界面再测返回和主页决定你能不能正常导航最后测音量键和电源键。如果前两组正常、只有电源键不行那大概率不是码值错了而是电源键被系统单独接管了这个在第 5.2 节展开。如果热加载有效但重启之后失效说明配置没有持久化。检查两个地方文件是不是放在了/storage/.config/下不是/etc/或者/root/以及rc_maps.cfg里那一行的驱动名拼写对不对。提示/flash分区默认是只读的。如果你要改config.ini里的唤醒参数得先mount -o remount,rw /flash改完再mount -o remount,ro /flash。直接改会提示 Read-only file system很多人以为是权限问题实际上是文件系统挂载属性。5. 失灵场景排查实录与速查表配置写完能用了不代表以后不会出问题。这一章按我实际遇到的顺序整理一下典型的失灵场景。5.1 故障速查表现象可能原因排查方向所有按键完全无反应遥控器没电、红外接收头被挡、配置未加载手机摄像头看发射管dmesg看驱动日志部分按键有效部分无效码表缺项、键值填错、Kodi 未绑定逐个抓码比对确认键值是否被 Kodi 拦截按键有反应但功能不对码值对应关系错位对照键值表重新核对单击正常长按失灵repeat_enable未开或周期参数过大检查repeat_enable1、repeat_peroid长按变连击repeat_delay太小调到 130 以上刚开机好用过一会儿失灵模块被卸载、系统休眠策略lsmod检查模块状态看电源管理设置改完配置重启就失效文件位置错、编码带 BOM、换行是 CRLF用file命令看编码cat -A看行尾电源键关机能关开机唤不醒唤醒参数未配置或厂商码不匹配检查config.ini的remotewakeup表格里最后那条其实是最常见的“疑难杂症”值得单独说。5.2 电源键唤不醒单独说盒子关机之后按遥控器没反应但插电开机之后遥控器一切正常这个问题的本质是关机状态下系统只跑一个极简的待机程序红外接收头由专门的电路维持供电它只认一个固定的唤醒码。你改的remote.conf在关机状态下根本没被读进去。唤醒配置在/flash/config.ini里需要两步mount -o remount,rw /flash vi /flash/config.ini找到或者添加这两行remotewakeup0xbf40fe01 decode_type0x0remotewakeup是唤醒码格式跟普通扫描码不太一样它是厂商码加数据码拼起来的完整帧通常能在原厂固件的配置文件里找到或者从dmesg里识别。decode_type指定解码协议0x0 是 NEC0x1 是 RC6具体填哪个取决于遥控器。改完保存执行mount -o remount,ro /flash恢复只读然后完整断电重启一次不是重启系统是拔电源让待机程序重新读取配置。如果配完还是不行有两个方向要查。一是厂商码不匹配remotewakeup里的高位部分要跟遥控器实际发出的前导码一致这个得靠抓码确认。二是 HDMI-CEC 在捣乱有些电视会通过 CEC 通道发送唤醒指令跟红外唤醒产生竞争表现就是有时能唤醒有时不能。可以在 Kodi 的 CEC 设置里把相关功能关掉试试。5.3 几个只有踩过才知道的坑第一个坑文件名对但位置错。CoreELEC 启动时会依次读取几个位置的配置/storage/.config/的优先级最高。但有些老教程写的是/etc/remote.conf或者/root/.config/照着放进去系统压根不读。判断方法很简单改完重启如果dmesg里没有任何关于读取配置的日志多半就是位置不对。第二个坑文件编码。用 Windows 上的编辑器改完再用 SFTP 传上去很容易带上 CRLF 或者 UTF-8 BOM。remote.conf的解析器对这种东西极其不宽容可能整份文件直接读失败日志里还不会有明显报错。检查方法file /storage/.config/remote.conf cat -A /storage/.config/remote.conf | head -5如果cat -A的输出行尾是^M$那就是 CRLF正常应该只有$。行首出现M-oM-;M-?这种乱码就是 BOM。两个都得处理掉用dos2unix或者编辑器里的转换功能都行。第三个坑一个键值被两个扫描码占用。这种情况多出现在你从网上抄了一份别人的码表、又自己补了几行的情况下。两个扫描码都映射到KEY_BACK按哪个都触发返回看起来“某个键失灵了”实际上是映射重复。写完之后扫一眼有没有重复的右侧值能避免大半这类问题。第四个坑Kodi 层的覆盖。你在驱动层把某个键映射成了KEY_MENU结果按下去什么都不发生。原因是 Kodi 的默认 keymap 里KEY_MENU在当前窗口没有绑定动作事件被吞掉了。这时候你可以换一个键值也可以在 Kodi 层补一条映射。判断方法SSH 里跑evtest按那个键看终端有没有打印事件。有事件说明驱动层没问题问题在上层没事件说明驱动层就没认出来。第五个坑遥控器本身的物理老化。用久了导电橡胶触点会氧化表现是某个键特别难按要用力才灵。这不是软件问题拆开用酒精棉擦一下触点和 PCB 上的碳膜能救回来。判断方法用手机摄像头看按那个键的时候如果闪烁明显比其他键暗或者干脆不闪那就是物理问题。6. Kodi 层的按键二次定制驱动层把码值翻译成键值之后还有一道工序Kodi 把这些键值翻译成具体动作。这一层是可选的但如果你想让遥控器用起来更顺手这层值得花点时间。6.1 keymaps/remote.xml 的作用范围Kodi 的按键映射文件在/storage/.kodi/userdata/keymaps/目录下默认可能不存在自己新建一个remote.xml就行。它的作用域分得很细最外层是keymap标签里面按界面场景划分比如global是全局生效、Home是主页、FullscreenVideo是全屏播放、VideoOSD是播放控制条。一份最简的写法长这样keymap global remote playPlayPause/play titleContextMenu/title subtitleShowSubtitles/subtitle /remote /global /keymapremote这一层对应的是红外或者 HID 遥控器上报的键值跟键盘的keyboard区分开。play是键名对应KEY_PLAYPAUSE后面的PlayPause是 Kodi 内建动作名。这套机制最实用的地方在于它可以把一个物理键在不同场景下映射成不同功能。比如同样的返回键在主页按是退出在播放界面按是回到列表在设置界面按是返回上一级全都是 Kodi 根据当前窗口自动分派的你不需要重复配置。修改完之后Kodi 会自动重载 keymap不用重启。如果改了没效果检查 XML 是不是语法错误——差一个闭合标签就会整份失效而且 Kodi 的日志里报错信息藏得比较深得开调试日志才看得到。6.2 长按、组合与场景化映射基础映射搞定之后可以玩一些进阶的。长按在 XML 里是用longpress标签表示的夹在按键标签里面keymap global remote title shortpressContextMenu/shortpress longpress time800ActivateWindow(ShutdownMenu)/longpress /title /remote /global /keymaptime属性是长按判定阈值单位毫秒默认 500 左右。设成 800 意味着按住超过 0.8 秒才算长按短按触发前者。这个功能在遥控器按键少的时候特别有用一个键当两个用把常用功能都塞进去。场景化映射就是把同一个物理键在不同窗口里绑定不同动作。下面这个例子是把遥控器上的菜单键做成“在播放界面呼出音轨切换在列表界面呼出上下文菜单”keymap FullscreenVideo remote menuAudioNextLanguage/menu /remote /FullscreenVideo MyVideoNav remote menuContextMenu/menu /remote /MyVideoNav /keymap这里的关键是窗口名要写对。FullscreenVideo是全屏播放、MyVideoNav是视频文件列表、MyMusicNav是音乐列表、Home是主页、Settings是设置界面。写错了不报错就是不生效所以调试的时候建议先在一个场景里验证成功再往上加。我个人的经验是遥控器的按键不是越多越好配而是要配成一套有肌肉记忆的逻辑。方向上确认返回这四个键是最高频的不要在它们上面叠长按功能容易误触音量和播放控制次之菜单类功能放在边缘按键上做长按用不上的时候不碍事。配完之后让家里人用两天哪儿别扭就调哪儿比自己一个人对着屏幕测试靠谱得多。配置这东西没有一劳永逸的版本盒子换了、遥控器换了、系统大版本升级了都可能要重新过一遍。我自己的习惯是把调好的remote.conf和rc_maps.cfg连同对应的盒子型号一起存在一个目录里下次遇到同型号的机器直接拷进去热加载一下就能用省下来的时间比当初折腾配置的时间多得多。
阅读完成 · 觉得有帮助?
咨询建站