Могу ли я настроить LIRC, чтобы я мог перемещаться по Unity Launcher, используя мой MCE Remote Control, и как мне это сделать?

На моем Ubuntu 12.04 HTPC у меня установлен и работает внешний интерфейс MythTV, XBMC и Steam Linux, и я хотел бы иметь возможность управлять машиной с помощью ИК-пульта дистанционного управления, без необходимости подключения клавиатуры или другого устройства ввода каждый раз, когда я загружаюсь, просто чтобы иметь возможность запускать свои приложения.

Я настроил lirc для своего MCE Remote Control, используя панель управления Mythbuntu, и успешно протестировал его с помощью irw. Он хорошо работает в упомянутых приложениях, но мне нужно иметь возможность использовать его и для запуска этих приложений.

Я искал решение и нашел очень мало, что помогает. Даже предложения на домашней странице LIRC ( http://www.lirc.org/software.html ) устарели, плохо обслуживаются и / или не будут установлены.

Я думаю, что этот тип общих методов ввода должен быть в состоянии использоваться «из коробки» с новым интерфейсом Unity, поэтому меня удивляет, что Launcher не совместим.

Во всяком случае, кто-нибудь имеет какие-либо идеи, как сделать эту работу, или есть какое-либо другое решение моей проблемы?

Спасибо,

Рич.

0
задан 13 February 2013 в 03:18

2 ответа

Я нашел эту статью в LIRC . Он предлагает установить пакет 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 на клавиатуре. Достаточно выполнить базовую навигацию по панели запуска. Теперь, если был только какой-то способ убить irxevent, когда запущена программа, совместимая с LIRC, и перезапустить ее, когда вы вышли все такие программы, без чрезмерной нагрузки на системные ресурсы, это будет прекрасно работать!

ПРИМЕЧАНИЕ. Здесь есть страница документации по irxevent . Глядя на это, я наконец смог сделать вывод, что если вы замените CurrentWindow на unity-2d-shell, то он будет работать только на Launcher, но проблема в том, что он выводит Launcher на передний план (иногда), даже если вы находитесь внутри другой программы. Предполагается, что это способ использования параметра «Фокус», поэтому нажатия клавиш будут работать только в том случае, если целевая программа имеет фокус. Помимо очевидной проблемы «как вы фокусируете внимание на Launcher в первую очередь после выхода из другой программы?», другая проблема заключается в том, что вы используете Focus, как показано в документации, например ...

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

... кажется, что полностью уничтожает операцию irxevent - она ​​вообще не реагирует на нажатия кнопок. Удалите слово «Фокус», и оно снова будет работать нормально, но мешает работе другого программного обеспечения.

Единственный способ, с помощью которого я могу увидеть эту работу, - это иметь возможность уничтожить irxevent, когда работает любое программное обеспечение из «списка исключений», и перезапустить его, если ни одно из этих программ не запущено. Но я не знаю, как это сделать, и я надеюсь, что есть более элегантное решение.

0
ответ дан 13 February 2013 в 03:18

Я нашел эту статью и довольно долго работал над проблемой, и, наконец, все заработало. Вы можете увидеть, что я делал в первых двух сообщениях в этой теме на форумах Ubuntu . Я надеюсь, что кто-то может развить это немного дальше.

0
ответ дан 13 February 2013 в 03:18

Другие вопросы по тегам:

Похожие вопросы: