Atalho de teclado: Apenas metade dos botões do MCE R6 funcionam

0

Acabei de instalar o Ubuntu 16.04.3 LTS, em um PC de mesa. Estou usando este computador como um PC de mídia / jogos. Eu tenho um controle remoto Harmony 350 Control IR (MCE R6) que é usado principalmente para controlar o aplicativo de mídia, no entanto, eu gostaria de usar alguns dos botões do controle remoto para iniciar aplicativos e controlar o PC.

Estou mapeando botões para comandos usando as configurações do sistema - > Teclado - > Menu de atalhos. Eu usei o arquivo / lib / udev / keymaps / rc6_mce e coloquei em / etc / rc_keymaps

A maioria dos botões funciona. Por exemplo, mapeei o botão "Mídia" para iniciar o Spotify mapeando o botão "Mídia de áudio" do meu controle remoto para iniciá-lo.

Mapeado com sucesso para a mídia

Mas não consigo mapear o botão INFO do meu controle remoto para iniciar o Kodi. Quando vou designá-lo, o aplicativo Mapeamento de Teclado não o "vê". Eu segurei por um tempo, mas nada acontece.

As duas chaves estão no arquivo / etc / rc_keymaps / rc6_mce:

0x800f040d KEY_MEDIA
0x800f040f KEY_INFO

E quando eu uso o ir-keytable -t, ambos funcionam como esperado, então o computador os está recebendo:

1515875517.689915: event type EV_MSC(0x04): scancode = 0x800f040d
1515875517.689915: event type EV_KEY(0x01) key_down: KEY_MEDIA(0x00e2)
1515875517.689915: event type EV_SYN(0x00).
1515875517.964577: event type EV_KEY(0x01) key_up: KEY_MEDIA(0x00e2)
1515875517.964577: event type EV_SYN(0x00).
1515875518.928910: event type EV_MSC(0x04): scancode = 0x800f040f
1515875518.928910: event type EV_KEY(0x01) key_down: KEY_INFO(0x0166)
1515875518.928910: event type EV_SYN(0x00).
1515875519.212562: event type EV_KEY(0x01) key_up: KEY_INFO(0x0166)
1515875519.212562: event type EV_SYN(0x00).

Mas ao tentar mapeá-los, o aplicativo Atalho de Teclado só verá KEY_MEDIA.

E, novamente, isso não é apenas esses dois botões. Estes dois são apenas bons exemplos porque são tão semelhantes. Muitos outros botões funcionam (FastForwrd, Rewind, Record, etc) e muitos não (o teclado numérico inteiro, menu, guia, etc) com o mesmo problema. O ir-keytable os vê bem, mas o aplicativo Configurações do teclado não funciona.

Então, o que há entre o ir-keytable e o aplicativo de atalho de teclado que está "comendo" o botão pressionado?

Obrigado.

    
por for-the 13.01.2018 / 20:45

1 resposta

0

Eu percebi isso.

O X11 só compreende códigos de varredura até 255. Metade dos botões do controle remoto usa scancodes mais altos. Então, primeiro eu tenho uma lista de todos os scancodes que meu controle remoto usa:

ir-keytable --read --device = / dev / entrada / evento19

(/ dev / input / event19 é o dispositivo em que meu controle está ligado. Rodar o comando ir-keytable sem parâmetros irá dizer qual é o seu.)

Isso produz uma lista como essa. O número no final entre colchetes é o que nos interessa.

scancode 0x800f0410 = KEY_VOLUMEUP (0x73)
scancode 0x800f0411 = KEY_VOLUMEDOWN (0x72)
scancode 0x800f0412 = KEY_CHANNELUP (0x192)
scancode 0x800f0413 = KEY_CHANNELDOWN (0x193)
scancode 0x800f0414 = KEY_FASTFORWARD (0xd0)

Nada nessa lista maior que 0xFF não funcionará. (Ou, mais simples, qualquer coisa que tenha três dígitos. Então CHANNELUP (0x192) e CHANNELDOWN (0x193) neste caso)

Então eu apenas editei meu arquivo / etc / rc_keymaps / rc6_mce e mapeei esses botões para algo que eu sabia que era menor.

Isso também resolveu um problema que eu tive com a Kodi, onde alguns botões não estavam funcionando no meu controle remoto. KEY_INFO, KEY_STOP e alguns outros. Eu remapeei aqueles para pressionamentos regulares de teclas (KEY_INFO para KEY_I, etc) e isso funciona bem agora.

    
por for-the 15.01.2018 / 04:50