键盘快捷键:MCE R6 按钮中只有一半能用

键盘快捷键:MCE R6 按钮中只有一半能用

我刚刚在台式电脑上安装了 Ubuntu 16.04.3 LTS。我将这台电脑用作媒体/游戏电脑。我有一个 Harmony 350 Control IR (MCE R6) 遥控器,主要用于控制媒体应用程序,但我想使用遥控器上的某些按钮来启动应用程序并以其他方式控制电脑。

我正在使用系统设置 -> 键盘 -> 快捷键菜单将按钮映射到命令。我使用了 /lib/udev/keymaps/rc6_mce 文件并将其放入 /etc/rc_keymaps 中

大多数按钮都可以使用。例如,我已将“媒体”按钮映射为启动 Spotify,方法是将遥控器上的“音频媒体”按钮映射为启动 Spotify。

已成功映射到媒体

但我无法映射遥控器的 INFO 按钮来启动 Kodi。当我去分配它时,键盘映射应用程序没有“看到”它。我按住它一段时间,但什么也没发生。

两个密钥都在 /etc/rc_keymaps/rc6_mce 文件中:

0x800f040d KEY_MEDIA
0x800f040f KEY_INFO

当我使用 ir-keytable -t 时,两者都按预期工作,因此计算机正在接收它们:

1515875517.689915: event type EV_MSC(0x04): scancode = 0x800f040d
1515875517.689915: event type EV_KEY(0x01) key_down: KEY_MEDIA(0x00e2)
1515875517.689915: event type EV_SYN(0x00).
1515875517.964577: event type EV_KEY(0x01) key_up: KEY_MEDIA(0x00e2)
1515875517.964577: event type EV_SYN(0x00).
1515875518.928910: event type EV_MSC(0x04): scancode = 0x800f040f
1515875518.928910: event type EV_KEY(0x01) key_down: KEY_INFO(0x0166)
1515875518.928910: event type EV_SYN(0x00).
1515875519.212562: event type EV_KEY(0x01) key_up: KEY_INFO(0x0166)
1515875519.212562: event type EV_SYN(0x00).

但是当尝试映射它们时,键盘快捷键应用程序将只能看到KEY_MEDIA。

再次强调,这不仅仅是这两个按钮的问题。这两个按钮只是很好的例子,因为它们非常相似。许多其他按钮都可以使用(快进、倒带、录制等),但很多按钮都不能使用(整个数字键盘、菜单、指南等),并且存在同样的问题。ir-keytable 可以正常看到它们,但键盘设置应用程序却不能。

那么,ir-keytable 和键盘快捷键应用程序之间有什么在“吞噬”我的按钮按下操作?

谢谢。

答案1

我明白了。

X11 仅能识别最高 255 的扫描码。遥控器上有一半的按钮使用更高的扫描码。因此,我首先通过以下操作获取遥控器使用的所有扫描码的列表:

ir-keytable --read --device=/dev/input/event19

(/dev/input/event19 是我的遥控器所在的设备。运行不带参数的 ir-keytable 将告诉您哪一个是您的。)

这样就生成了如下列表。末尾括号内的数字就是我们感兴趣的。

scancode 0x800f0410 = KEY_VOLUMEUP (0x73)
scancode 0x800f0411 = KEY_VOLUMEDOWN (0x72)
scancode 0x800f0412 = KEY_CHANNELUP (0x192)
scancode 0x800f0413 = KEY_CHANNELDOWN (0x193)
scancode 0x800f0414 = KEY_FASTFORWARD (0xd0)

该列表中任何大于 0xFF 的值均不起作用。(或者,简单地说,任何有三位数的值。因此,在本例中是 CHANNELUP (0x192) 和 CHANNELDOWN (0x193))

然后我只是编辑了我的 /etc/rc_keymaps/rc6_mce 文件并将这些按钮映射到我知道的较低的位置。

这也解决了我在使用 Kodi 时遇到的一个问题,即遥控器上的某些按钮无法正常工作。KEY_INFO、KEY_STOP 和其他一些按钮。我将它们重新映射到常规按键(KEY_INFO 到 KEY_I 等),现在也可以正常工作了。

相关内容