Remoto IR - algumas teclas de mídia não funcionam (KEY_NEXTSONG / KEY_PREVIOUSSONG)

0

Eu li muitos textos para chegar até aqui :) Depois do upgrade de 17.04, o LIRC não funcionou mais com o meu NUC7i5 ... então eu descobri o uso do ir-keytable. ( Este post me ajudou muito! )

Então, depois de desinstalar o LIRC, minha tabela de chaves ficou assim (interessante que o protocolo lirc ainda está ativado):

sudo ir-keytable
Found /sys/class/rc/rc0/ (/dev/input/event6) with:
    Driver ite-cir, table rc-rc6-mce
    Supported protocols: unknown other lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp 
    Enabled protocols: lirc 
    Name: ITE8708 CIR transceiver
    bus: 25, vendor/product: 1283:0000, version: 0x0000
    Repeat delay = 500 ms, repeat period = 125 ms

Então eu descobri que o antigo controle remoto do Mac que tenho está trabalhando no protocolo NEC, então eu criei meu próprio rc_keymaps e ativei o protocolo NEC assim:

cp /lib/udev/rc_keymaps/nec_terratec_cinergy_xs /etc/rc_keymaps/nec_mac
sudo ir-keytable -p nec

Agora eu poderia executar o teste ir-keytable para ver os scancodes das chaves remotas:

sudo ir-keytable -t
Testing events. Please, press CTRL-C to abort.
1504134142.373150: event type EV_MSC(0x04): scancode = 0x77e15025
1504134142.373150: event type EV_SYN(0x00).
1504134143.213712: event type EV_MSC(0x04): scancode = 0x77e13025
1504134143.213712: event type EV_SYN(0x00).
1504134143.935559: event type EV_MSC(0x04): scancode = 0x77e16025
1504134143.935559: event type EV_SYN(0x00).
1504134145.042733: event type EV_MSC(0x04): scancode = 0x77e19025
1504134145.042733: event type EV_SYN(0x00).
1504134145.844078: event type EV_MSC(0x04): scancode = 0x77e1a025
1504134145.844078: event type EV_SYN(0x00).

Esses scancodes foram úteis para modificar o arquivo keymap copiado:

sudo nano /etc/rc_keymaps/nec_mac

O resultado dessa modificação é assim:

cat /etc/rc_keymaps/nec_mac 
# table nec_mac type: NEC
0x77e15025 KEY_VOLUMEUP
0x77e13025 KEY_VOLUMEDOWN
0x77e1a025 KEY_PLAYPAUSE
0x77e19025 KEY_PREVIOUSSONG
0x77e16025 KEY_NEXTSONG

Depois de limpar o keytable antigo do ir-keytable e carregar o novo arquivo rc_keymaps nec_mac, o remoto trabalhou parcialmente em 17.04 e no Rhythmbox (eu tenho esses comandos no meu rc.local para ativar os keymaps na inicialização):

sudo ir-keytable -c
sudo ir-keytable -p nec -w /erc/rc_keymaps/nec_mac

Mas dois botões não estão funcionando: KEY_PREVIOUSSONG e KEY_NEXTSONG. Eu tenho um teclado Logitech sem fio (k830, com um receptor USB) ... aqui todas as teclas de mídia estão trabalhando com o Rythmbox. E se eu tentar o comando sudo showkey e eu pressionar o teclado KEY_NEXTSONG e o controle remoto IR KEY_NEXTSONG, recebo o mesmo código de acesso:

keycode 163 press
keycode 163 release

Se eu tentar instalar o LIRC novamente depois de todas essas configurações, ou o controle remoto IR não está mais funcionando ou está entrando em algum "loop infinito" (por exemplo, pressionando uma vez KEY_VOLUMEUP e sobe todo o caminho).

Então alguém tem alguma idéia de como lidar com o ir-keytable sem o LIRC para fazer com que essas duas teclas funcionem no rhythmbox?

Minha versão do kernel deve ser up2date: 4.10.0-33-generic

Obrigado por todas as sugestões.

    
por lorny 31.08.2017 / 01:46

1 resposta

0

Eu tenho o genérico 4.4.0 em execução no Macbook Pro (2011) com um controle remoto Apple e tive o mesmo problema. Primeiro, então como eu corrigi:

Antecedentes:

Meu kernel - instalado com o Mint 18.1, baseado no Ubuntu 16.4, é mais antigo que o seu - reconhece o controle remoto antes de instalar qualquer coisa. Aumentar volume, Diminuir volume, reproduzir / pausar funcionam como as teclas do teclado, a próxima faixa e a faixa anterior não. Eu reinstalei o pacote lirc e editei em uma especificação do mac mini para o controle remoto. Nenhuma mudança. Rodando, vejo que o kernel reconhece o controle remoto e cria um evento para cada botão.

Algumas pessoas mencionaram que o kernel mais novo simplesmente não funcionava com o controle remoto como um antigo fazia e desistiu ou voltou para um kernel anterior, mas aqui está o que eu fiz.

Corrigindo:

Eu instalei o pacote evtest

$ sudo apt install evtest

Ran evtest. O programa fornece uma lista de todos os dispositivos de entrada & amp; c. Selecione o número para o controle remoto e pressione enter. No meu laptop a lista incluía

/dev/input/event6:  Apple Computer, Inc. IR Receiver
/dev/input/event7:  Apple Inc. Apple Internal Keyboard / Trackpad

para ver o apple remote eu digito 6.

$ sudo evtest

Select the device event number [0-16]: 6
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x5ac product 0x8242 version 0x111
Input device name: "Apple Computer, Inc. IR Receiver"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
  Event code 28 (KEY_ENTER)
  Event code 114 (KEY_VOLUMEDOWN)
  Event code 115 (KEY_VOLUMEUP)
  Event code 139 (KEY_MENU)
  Event code 158 (KEY_BACK)
  Event code 159 (KEY_FORWARD)
  Event code 164 (KEY_PLAYPAUSE)
  Key repeat handling:
    Repeat type 20 (EV_REP)
      Repeat code 0 (REP_DELAY)
        Value    250
      Repeat code 1 (REP_PERIOD)
        Value     33
Properties:
Testing ... (interrupt to exit)
Event: time 1509552582.912009, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1
Event: time 1509552582.912009, -------------- SYN_REPORT ------------
Event: time 1509552583.034614, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1509552583.034614, -------------- SYN_REPORT ------------
Event: time 1509552586.159731, type 1 (EV_KEY), code 159 (KEY_FORWARD), value 1
Event: time 1509552586.159731, -------------- SYN_REPORT ------------
Event: time 1509552586.338556, type 1 (EV_KEY), code 159 (KEY_FORWARD), value 0
Event: time 1509552586.338556, -------------- SYN_REPORT ------------
Event: time 1509552587.375649, type 1 (EV_KEY), code 158 (KEY_BACK), value 1
Event: time 1509552587.375649, -------------- SYN_REPORT ------------
Event: time 1509552587.626549, type 1 (EV_KEY), code 158 (KEY_BACK), value 2
Event: time 1509552587.626549, -------------- SYN_REPORT ------------
Event: time 1509552587.650543, type 1 (EV_KEY), code 158 (KEY_BACK), value 0
Event: time 1509552587.650543, -------------- SYN_REPORT ------------

Agora vamos ver o que acontece quando pressiono o próximo botão de faixa e o botão da faixa anterior no teclado:

Select the device event number [0-16]: 7

Event: time 1509552799.129798, type 1 (EV_KEY), code 165 
(KEY_PREVIOUSSONG), value 1
Event: time 1509552799.129798, -------------- SYN_REPORT ------------
Event: time 1509552799.265788, type 1 (EV_KEY), code 165 
(KEY_PREVIOUSSONG), value 0
Event: time 1509552799.265788, -------------- SYN_REPORT ------------
Event: time 1509552800.641684, type 1 (EV_KEY), code 163 (KEY_NEXTSONG), value 1

Assim, o teclado está gerando o código correto "KEY_PREVIOUSSONG", "KEY_NEXTSONG", mas o controle remoto não é.

então, edite o arquivo /etc/lirc/hardware.conf

Bem, na minha máquina, o diretório / etc / lirc não existe. então ...

$ apt install lirc

Depois de instalar os arquivos do pacote, um script é executado automaticamente. Você tem que selecionar o seu hardware remoto de uma lista e aperte enter. Eu selecionei "mac mini blah blah" e da lista seguinte (transmissores, eu acho) selecionei nenhum. Agora existe um arquivo /etc/lirc/hardware.conf. Está praticamente vazio e aponta para um arquivo específico para este controle remoto. então edite este arquivo - não é fácil descobrir a localização, eu encontrei em

cd /usr/share/lirc/remotes/apple/
nano lircd.conf.macmini

altere a palavra KEY_REWIND para KEY_PREVIOUSSONG e altere KEY_FORWARD para KEY_NEXTSONG.

Agora reinicie o lirc daemon para reconhecer a nova configuração.

sudo /etc/init.d/lirc restart

Agora os botões direito e esquerdo funcionarão. :)

    
por oblonsky 01.11.2017 / 18:51