本教程适用于Sx05RE和CoreELEC
自从知道有一种超便宜的S905盒子,可以随便刷Linux、安卓,可以作为下载机、游戏机、高清播放器等,便立即花了几十元从咸鱼入手一台二手的二手,开始折腾。
S905盒子有很多版本,我这个是中国移动不知道哪个省的,数码视讯Q5,就是下面这个样子:
Q5Box.jpg
参考数码视讯Q5-Sx05RE系统初试这篇文章,刷了Sx05RE 2.2.1。游戏功能没什么太大问题,不过其实我更常用的是Kodi。然而盒子的遥控器无法操作Kodi界面,很不爽。经过一番搜索,参考这篇帖子完成了Kodi中遥控器的设置,现在终于可以单手遥控器躺沙发上舒服看电影了。
所有操作都是通过SSH进行的,下面说一下详细过程。
- SSH登录上去,停掉一个跟遥控有关的程序。Kodi可以不用停。
systemctl stop eventlircd
- 记录遥控器的键码
执行命令:
ir-keytable -t
执行后系统会等待你按键,按Ctrl+C退出。拿起遥控器,对着盒子逐个按下按键,每按一下控制台就会显示一些信息,你需要记录下你按的键和SSH控制台上显示的scancode
。控制台大概是这个样子:
Testing events. Please, press CTRL-C to abort.
561.858906: event type EV_MSC(0x04): scancode = 0x48770e
561.858906: event type EV_SYN(0x00).
562.498391: event type EV_MSC(0x04): scancode = 0x48771e
562.498391: event type EV_SYN(0x00).
563.114650: event type EV_MSC(0x04): scancode = 0x48774c
563.114650: event type EV_SYN(0x00).
565.104314: event type EV_MSC(0x04): scancode = 0x487744
565.104314: event type EV_SYN(0x00).
最终,我记录下这样的列表:
上:0x487700
下:0x487701
左:0x487703
右:0x487702
OK:0x48771f
菜单:0x487707
主页:0x487705
返回:0x48771c
设置:0x48770f
音量+:0x487706
音量-:0x48770b
静音:0x48770c
0:0x487710
1:0x487711
2:0x487712
3:0x487713
4:0x487714
5:0x487715
6:0x487716
7:0x487717
8:0x487718
9:0x487719
小数点:0x48771d
删除:0x487720
电源:0x48770a
红:0x48770e
绿:0x48771e
黄:0x48774c
蓝:0x487744
# 下面是遥控器上电视机按键区的按钮
TV/AV:0x4877f2
TV电源:0x4877f1
TV音量+:0x4877f4
TV音量-:0x4877f3
- 制作遥控器按键与Kodi功能的映射文件
Kodi支持的按键列表,可以在这里查到:https://github.com/tirithen/xbmc/blob/master/xbmc/platform/linux/input/LinuxInputDevices.cpp#L126
按你自己喜好来设计遥控器按键与Kodi功能键的对应关系,把上面记录的按键编码与Kodi的按键名一一映射,按照后面给出的格式写好。
如果你是在Windows中编辑,要特别注意字符编码应使用UTF-8,换行应使用Unix的LF模式,而不是Windows下的CRLF,否则后面加载时会报错。
下面是我最后编辑好的映射文件,除了遥控器最下面的彩色按钮和电视机按键区的音量按钮,其他按键都用上了,停止播放用的是电视机电源键,播放/暂停用的是电视机TV/AV键。注意最上面一行看上去是注释,但实际上后面的type: NEC
是通讯协议名称,不能改,否则后面步骤会报错。
# table Q5, type: NEC
0x48770a KEY_POWER
0x487700 KEY_UP
0x487703 KEY_LEFT
0x487702 KEY_RIGHT
0x487701 KEY_DOWN
0x487711 KEY_1
0x487712 KEY_2
0x487713 KEY_3
0x487714 KEY_4
0x487715 KEY_5
0x487716 KEY_6
0x487717 KEY_7
0x487718 KEY_8
0x487719 KEY_9
0x487710 KEY_0
0x48771d KEY_DOT
0x487720 KEY_BACKSPACE
0x487705 KEY_HOME #主页
0x487707 KEY_CONTEXT_MENU #菜单
0x48771f KEY_ENTER #选中
0x48771c KEY_ESC #返回
0x48770f KEY_CONFIG #设置
0x4877f1 KEY_STOP #电视按键区的电源键
0x4877f2 KEY_PLAYPAUSE #电视按键区的TV/AV键
0x48770b KEY_VOLUMEDOWN #音量+
0x487706 KEY_VOLUMEUP #音量-
0x48770c KEY_MUTE #静音
编辑完后,把文件保存到/storage/.config/rc_keymaps/
文件夹下,随便用什么文件名,比如我用的是"Q5"。
如果不习惯Linux编辑器,也可以在Windows电脑上,通过网络路径直接进行文件编辑。
/storage/.config/rc_keymaps/
对应的网络路径是盒子IP地址\\Configfiles\rc_keymaps\
。
- 登记映射文件
把/storage/.config/
下的rc_maps.cfg.sample
复制改名成rc_maps.cfg
,打开,在最下面加入一行:
meson-ir * Q5
后面的Q5就是上一步保存的映射定义文件名,换成你自己的。
这个文件最后是这个样子:
# Keymaps table
#
# This table creates an association between a keycode file and a kernel
# driver. It can be used to automatically override a keycode definition.
#
#
# Format:
# driver - name of the driver provided via uevent - use * for any driver
# table - RC keymap table, provided via uevent - use * for any table
# file - file name. If directory is not specified, it is first looked up
# in /storage/.config/rc_keymaps, then /usr/lib/udev/rc_keymaps
#
# For example:
#
# driver table file
#
# gpio-rc-recv rc-streamzap streamzap
# gpio-rc-recv * justboom
# * rc-rc6-mce rc6_mce_new
# * * hauppauge_new
meson-ir * Q5
- 加载映射文件
现在,所有的配置都完成了,我们赶快试试吧。
先执行下面的命令,加载配置文件:
ir-keytable -a /storage/.config/rc_maps.cfg -s rc0
然后,启动在第一步停掉的遥控器程序。
systemctl start eventlircd
现在,用遥控器试试操作Kodi,看看是不是如你所愿!如果有什么按键不满意,就重新编辑映射文件并加载,可以立即生效并测试。这个过程不需要停止遥控器程序。
- 微调遥控器按键灵敏度等(非必须)
如果对遥控器灵敏度等不满意,可以使用下面的命令进行微调。不过我调来调去都不是很完美,可能盒子的性能不太行?
ir-ctl -t 50000 # 按键识别延时(纳秒),越小反应越快,但太小有可能导致按键事件不被识别。
ir-keytable -D 375 -P 100 #按下多久后开始重复以及重复间隔时间,毫秒
后记
后来我发现其实用别的随便什么设备的红外遥控器,都能按照上述步骤进行配置,所以,如果你有闲置的更顺手的多媒体遥控器,可以拿来废物利用哦!
网友评论