Conecte um teclado / controlador IR a um programa de linha de comando executado em uma tela

3

Estou tentando ter minha função Raspberry Pi como um player de música sem GUI. Eu tenho o Arch Linux instalado e o uso através do ssh. Eu também tenho um dongle receptor IR, e eu estou planejando usá-lo para controlar o volume da música, pular para a próxima música, tocar uma música aleatória, etc.

O dongle de IR identifica como um teclado e grava em / dev / input / event0. No começo, tentei fazer com que funcionasse com o LIRC, mas aparentemente os dongles IR que fingem que são teclados não funcionam bem com o LIRC.

Minha pergunta é que, agora que recebi uma entrada semelhante a teclado do meu receptor de IR, como eu poderia canalizar isso para o programa? Atualmente estou usando o cmus na tela.

Se houver algum tipo de conselho geral de como fazer minha configuração funcionar, ficarei feliz em ouvir isso. Se não, pelo menos eu gostaria de ter uma idéia de como conectar o teclado do receptor de IR a um programa rodando na tela.

Editar:

Quão idiota de mim, por que não pensei em simplesmente colocá-la em prática?

No entanto, há vários problemas:

Primeiro de tudo, cat /dev/input/event0 apenas gera mumble jumble (parecido com isso, no terminal UTF-8: SS xO SS xj SS x SS CO SS Cj SS C Um pressionamento de tecla pode produzir meia linha disso, e quanto mais tempo você pressionar, mais longa será a saída. Ele certamente responde toda vez que eu aperto um botão do meu controle remoto, mas não tenho certeza de qual codificação os bytes estão, são apenas scancodes ou o que.

Em segundo lugar, eu ainda quero controlá-lo a partir do ssh, então eu preciso de um multiplexador de entrada.

Em terceiro lugar, quando digito o seguinte:

cat /dev/input/event0 | screen -rd ou cat /dev/input/event0 | screen cmus

reclama:

Must be connected to a terminal.
    
por GolDDranks 20.04.2014 / 04:18

1 resposta

1

Não sei se entendi corretamente sua situação, mas

cat /dev/input/event0 | someprogram

deve fazer algum programa ler a partir da entrada padrão, o que for escrito em / dev / input / event0.

(Posso perguntar como você pode fazer o receptor de infravermelho gravar em um arquivo de dispositivo? Isso é algo que eu não consegui realizar com meu dongle de infravermelho.)

Meu conselho geral é ler o arquivo em um script python e, com base em qual personagem você leu, você pode fazer alguma coisa.

inputCharStream = open('/dev/input/event0')
while True:
    c = inputCharStream.read(1)
    if c=='a':
        print "character a"
    if c==chr(1):
        print "byte 1 which is not printable"
        break

Em vez de imprimir bobagens, você pode usar alguma biblioteca python e fazer algo útil.

    
por 20.04.2014 / 13:38