web-dev-qa-db-ja.com

一般的な入力デバイスの.hwdbヘッダーを見つける方法は?

古いUSB RFリモートをKodiで使用したい。リモートはキーコードを生成する非キーボード入力デバイスです。再マッピングを行いたいのですが、/usr/lib/keymapの時代以来、evtestとudevのhwdbファイルを支持して廃止されてきました。

HWDBルール(私の目的)は、ハードウェア識別ヘッダーと、一連のキーマッピングで構成されています。キーボードでこれを行う例をいくつか見つけましたが、キーボード以外の入力デバイスでは何もありません。また、hwdbヘッダーの作成方法を説明するものもありません。

一般的に、どのようにhwdbヘッダーを構築しますか?これが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
1
Autumn

これは思ったより簡単だった。ほとんどの場合、(gasp)のマニュアルページを読んで、一致文字列にUSBデバイスのモダリアの省略(およびワイルドカード)バージョンを使用しても問題ないことを理解しなければなりませんでした。

手順:

  1. lsusbを使用してデバイスベンダーを見つけます。鉱山は0BC7でした。

  2. でデバイスのすべてのmodaliasファイルを見つける

    find /sys -name *modalias | xargs grep -i 0BC7
    
  3. いくつかあります。ストリングが1つあるものを使用してください。私のファイルは

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

私のmodalias文字列は次のようになります。すべてのバージョンに適用したいので、「e」の前のすべてを必要としています。

    input:b0003v0BC7p0002e0100-e0,1,2,k110,111,113,114,r0,1,amlsfw
  1. Evtestを使用して、リモコンのボタンのスキャンコードを見つけます。これは、MSC_SCANの後の「値」です。私の場合、値0bのキーを使用しています。簡単に確認できるキーコードにマッピングします。ミュートです。

  2. このArch wikiページ への重い参照を使用して、/etc/udev/hwdb.d/10-x10.hwdbにhwdbファイルを作成します。を含む:

    evdev:input:b0003v0BC7p0002*
     KEYBOARD_KEY_0b=mute
    
  3. 次のコマンドは、新しいhwdbファイルを更新して使用します。

    udevadm hwdb --update
    udevadm trigger
    udevadm info /dev/input/event4 | grep KEYB
    
1
Autumn