我可以设置 LIRC 以便使用我的 MCE 遥控器导航 Unity Launcher 吗?我该如何操作?

我可以设置 LIRC 以便使用我的 MCE 遥控器导航 Unity Launcher 吗?我该如何操作?

我的 Ubuntu 12.04 HTPC 上安装了 MythTV 前端、XBMC 和 Steam Linux,并且运行良好,我希望能够通过红外遥控器控制机器,而不必在每次启动时插入键盘或使用其他输入设备,只是为了能够启动我的应用程序。

我使用 Mythbuntu 控制面板为我的 MCE 遥控器设置了 lirc,并使用 irw 成功测试了它。它在提到的应用程序中运行良好,但我也需要能够使用它来启动这些应用程序。

我到处寻找解决方案,但没有什么帮助。即使是 LIRC 主页上的建议(http://www.lirc.org/software.html) 已经过时、维护不善和/或无法安装。

我认为这些常见的输入方法应该能够在新的 Unity 界面上“开箱即用”,因此启动器不兼容令我感到惊讶。

无论如何,有人知道如何使其工作吗,或者对我的问题有其他解决方案吗?

谢谢,

富有的。

答案1

我发现LIRC 上的这篇 lifehacker 文章。它建议您安装 lirc-x 包。如果您这样做,然后按照我即将展示的方式修改 .lircrc 文件,然后运行irxevent程序(从终端窗口或作为启动的一部分 - 请注意,您可以使用irxevent -d在后台分叉并运行它)之后,您就可以导航 Unity 启动器。但有一个缺点 - 当 irxevent 正在运行,然后您进入一个知道如何使用 LIRC 的程序(例如 XBMC)时,会发生什么情况是两个程序都会收到您的远程密钥,并且都会尝试对它们进行操作,结果半可预测。我还没有找到解决这个问题的方法。

以下是我添加到 .lircrc 文件的内容:

begin
 prog = irxevent
 button = KEY_UP
 repeat = 0
 config = Key Up CurrentWindow
end

begin
 prog = irxevent
 button = KEY_DOWN
 repeat = 0
 config = Key Down CurrentWindow
    end

begin
 prog = irxevent
 button = KEY_LEFT
 repeat = 0
 config = Key Left CurrentWindow
end

begin
 prog = irxevent
 button = KEY_RIGHT
 repeat = 0
 config = Key Right CurrentWindow
end

begin
 prog = irxevent
 button = KEY_PLAY
 config = Key Return CurrentWindow
 repeat = 0
end

begin
 prog = irxevent
 button = KEY_OK
 config = Key Return CurrentWindow
 repeat = 0
end

这只是一个演示,只定义了遥控器上的六个按钮(箭头键、OK 和 Play,后两个键都发送相当于键盘上的 Return/Enter 键的信号)。这足以进行启动器的基本导航。现在,如果只有某种方法可以在运行与 LIRC 兼容的程序时杀死 irxevent,并在退出所有此类程序时重新启动它,而不会对系统资源造成太大的负担,那么这会很棒!

注意:irxevent 的文档页面在这里通过查看,我终于能够推断出,如果用 unity-2d-shell 替换 CurrentWindow,那么它只能在 Launcher 上工作。但问题是,即使您在另一个程序中,它也会将 Launcher 带到前台(有时)。应该有一种方法可以使用“Focus”选项,因此只有当目标程序具有焦点时,按键才会起作用。但除了“如何在退出另一个程序后首先将焦点放在 Launcher 上?”这个显而易见的问题之外,另一个问题是以文档中显示的方式使用 Focus,例如...

begin
 prog = irxevent
 button = KEY_UP
 repeat = 0
 config = Key Up Focus unity-2d-shell
end

...似乎完全终止了 irxevent 的运行 - 它根本不会对按钮按下做出响应。删除“Focus”一词,它又可以正常工作,但会干扰其他软件。

我认为唯一可行的方法是,当“排除列表”上的任何软件运行时,终止 irxevent,如果这些软件均未运行,则重新启动它。但我不知道该怎么做,我希望有一个更优雅的解决方案。

答案2

我找到了这篇文章,花了很长时间研究这个问题,最后终于解决了。你可以在Ubuntu 论坛上的这个帖子。我希望有人可以进一步发展这一点。

相关内容