Posso configurar o LIRC para permitir que eu navegue no Iniciador Unity, usando meu Controle Remoto MCE, e como eu faria isso?

0

Eu tenho MythTV front-end, XBMC e Steam Linux instalado e funcionando bem no meu Ubuntu 12.04 HTPC e gostaria de poder controlar a máquina por controle remoto IR, sem ter que ligar um teclado ou usar outro dispositivo de entrada toda vez que eu inicializo, só para poder lançar meus aplicativos.

Eu configurei o lirc para o meu Controle Remoto MCE, usando o Painel de Controle do Mythbuntu e o testei com sucesso com o irw. Ele funciona bem nos aplicativos mencionados, mas eu preciso usá-lo para iniciar esses aplicativos também.

Eu procurei por uma solução e consegui muito pouco, o que ajuda. Mesmo as sugestões na página inicial do LIRC ( link ) estão desatualizadas, mal conservadas e / ou não seriam instaladas.

Eu acho que esse tipo de método comum de entrada deve ser usado 'fora da caixa' com a nova interface do Unity, então me surpreende que o Launcher não seja compatível.

De qualquer forma, alguém tem alguma ideia de como fazer isso funcionar ou tem alguma outra solução para o meu problema?

Obrigado,

Rico.

    
por Rich.T. 13.02.2013 / 00:18

2 respostas

1

Eu encontrei este artigo do lifehacker no LIRC . Isso sugere que você instale o pacote lirc-x. Se você fizer isso e, em seguida, modificar seu arquivo .lircrc como estou prestes a mostrar e, em seguida, executar o programa irxevent (em uma janela de terminal ou como parte da inicialização - observe que você pode usar irxevent -d para bifurcar e executá-lo em segundo plano), você pode então navegar pelo iniciador Unity. Mas há uma desvantagem - quando o irxevent está em execução e você entra em um programa que sabe como operar com o LIRC (como o XBMC), o que acontece é que suas chaves remotas são recebidas pelos dois programas e ambas tentam agir nelas. , com resultados semi-previsíveis. Eu ainda não descobri uma maneira de contornar isso.

Aqui está o que eu adicionei ao meu arquivo .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

Esta é apenas uma demonstração que define apenas seis botões no controle remoto (as teclas de seta, OK e Play, os dois últimos enviando o equivalente à tecla Return / Enter no teclado. Basta fazer a navegação básica Agora, se houvesse apenas uma maneira de matar o irxevent quando um programa compatível com LIRC estivesse em execução e reiniciá-lo quando você saísse de todos esses programas, sem colocar muita carga nos recursos do sistema, isso funcionaria muito bem!

NOTA: Existe uma página de documentação no irxevent aqui . Ao observar que finalmente consegui deduzir que, se você substituir CurrentWindow por unity-2d-shell, ele só funcionará no Launcher. Mas o problema é que ele traz o Launcher para o primeiro plano (às vezes), mesmo se você estiver dentro de outro programa. Supõe-se que haja uma maneira de usar uma opção "Foco", de modo que os pressionamentos de tecla só funcionarão se o programa de destino tiver foco. Mas além da questão óbvia de "como você dá foco ao Launcher em primeiro lugar depois de sair de outro programa?", O outro problema é que usar o Focus da maneira mostrada na documentação, por exemplo ...

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

... parece matar completamente o funcionamento do irxevent - ele não responde ao botão pressionado. Remova a palavra "Focus" e ela funcionará bem novamente, mas interfere em outro software.

A única maneira que eu vejo que pode fazer este trabalho é ter uma maneira de matar o irxevent quando qualquer software em uma "lista de exclusões" estiver rodando, e reiniciá-lo se nenhum desses programas estiver rodando. Mas eu não sei como fazer isso, e espero que haja uma solução mais elegante.

    
por jack 10.04.2013 / 21:56
1

Eu encontrei este artigo e trabalhei o problema por um bom tempo, e finalmente consegui funcionar, mais ou menos. Você pode ver o que eu fiz nos dois primeiros posts em este tópico nos fóruns do Ubuntu . Espero que alguém possa desenvolver isso um pouco mais.

    
por Bullwinkle_Moose 15.04.2013 / 17:36