Como encontrar o cabeçalho .hwdb de um dispositivo de entrada geral?

0

Tenho um antigo controle RF USB que gostaria de usar com o Kodi. O controle remoto é um dispositivo de entrada sem teclado que gera códigos de teclas. Eu gostaria de fazer alguns remapeamentos, mas eu não fiz isso desde os dias do / usr / lib / keymap, que foi retirado em favor dos arquivos hwdb do evtest e do udev.

Uma regra do HWDB (para o meu propósito) consiste em um cabeçalho de identificação de hardware e, em seguida, em vários mapeamentos de teclas. Eu encontrei vários exemplos de fazer isso para um teclado, mas nenhum para o meu dispositivo de entrada sem teclado, e nenhum que explique como construir o cabeçalho hwdb.

De um modo geral, como faço para construir o cabeçalho hwdb? Aqui está a saída de udevadm info /dev/input/eventX .

P: /devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1:1.0/rc/rc0/input8/event4
N: input/event4
S: input/by-id/usb-X10_Wireless_Technology_Inc_USB_Transceiver-event-if00
S: input/by-path/pci-0000:00:02.0-usb-0:1:1.0-event
E: BACKSPACE=guess
E: DEVLINKS=/dev/input/by-path/pci-0000:00:02.0-usb-0:1:1.0-event /dev/input/by-id/usb-X10_Wireless_Technology_Inc_USB_Transceiver-event-if00
E: DEVNAME=/dev/input/event4
E: DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1:1.0/rc/rc0/input8/event4
E: ID_BUS=usb
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_MODEL=USB_Transceiver
E: ID_MODEL_ENC=USB\x20Transceiver
E: ID_MODEL_ID=0002
E: ID_PATH=pci-0000:00:02.0-usb-0:1:1.0
E: ID_PATH_TAG=pci-0000_00_02_0-usb-0_1_1_0
E: ID_REVISION=0100
E: ID_SERIAL=X10_Wireless_Technology_Inc_USB_Transceiver
E: ID_TYPE=generic
E: ID_USB_DRIVER=ati_remote
E: ID_USB_INTERFACES=:ff0000:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=X10_Wireless_Technology_Inc
E: ID_VENDOR_ENC=X10\x20Wireless\x20Technology\x20Inc
E: ID_VENDOR_ID=0bc7
E: MAJOR=13
E: MINOR=68
E: SUBSYSTEM=input
E: USEC_INITIALIZED=8383075
E: XKBLAYOUT=us
E: XKBMODEL=pc105
    
por DS Justice 07.03.2016 / 06:24

1 resposta

0

Isso acabou sendo mais fácil do que eu pensava. Basicamente, eu apenas tive que ler a página do manual (gasp) e descobrir que não há problema em usar uma versão abreviada (e curinga) dos modalias do dispositivo USB para uma sequência de correspondência.

Etapas:

  1. encontre o fornecedor do dispositivo com o lsusb. O meu foi 0BC7.

  2. Encontre todos os arquivos de modalias do dispositivo com

    find /sys -name *modalias | xargs grep -i 0BC7
    
  3. Haverá vários. Use o que tem uma única string. O meu foi o arquivo em

    /sys/devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1:1.0/modalias
    

Minha string de modalias é assim. Queremos tudo antes do 'e', porque queremos que ele se aplique a todas as versões.

    input:b0003v0BC7p0002e0100-e0,1,2,k110,111,113,114,r0,1,amlsfw
  1. Eu uso o evtest para encontrar um código de verificação para um botão no meu controle remoto. É o "valor" depois de um MSC_SCAN. No meu caso, estou usando a chave com o valor 0b. Vou mapeá-lo para um código que seja fácil de observar: mudo.

  2. Usando referências pesadas a esta página wiki do Arch , eu crio um arquivo hwdb em /etc/udev/hwdb.d/10-x10.hwdb . Contém:

    evdev:input:b0003v0BC7p0002*
     KEYBOARD_KEY_0b=mute
    
  3. Os seguintes comandos atualizam e usam meu novo arquivo hwdb.

    udevadm hwdb --update
    udevadm trigger
    udevadm info /dev/input/event4 | grep KEYB
    
por DS Justice 08.03.2016 / 01:42