Logitech Unifying Keyboard K270を購入し、Ubuntu 14.04を実行しています(はい、更新しています)。何らかの理由で「a」と「b」のキーが変わることを除いて、すべてがうまく機能します。
最終的にudevが問題を引き起こしていることを見つけましたが、キャンセルすることはできませんでした。
> udevadm info /dev/input/by-id/usb-Logitech_USB_Receiver-if02-event-kbd
P: /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.2/0003:046D:C52B.0015/input/input34/event18
N: input/event18
S: input/by-id/usb-Logitech_USB_Receiver-if02-event-kbd
S: input/by-path/pci-0000:00:14.0-usb-0:2:1.2-event-kbd
E: DEVLINKS=/dev/input/by-id/usb-Logitech_USB_Receiver-if02-event-kbd /dev/input/by-path/pci-0000:00:14.0-usb-0:2:1.2-event-kbd
E: DEVNAME=/dev/input/event18
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.2/0003:046D:C52B.0015/input/input34/event18
E: ID_BUS=usb
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_INPUT_KEYBOARD=1
E: ID_MODEL=USB_Receiver
E: ID_MODEL_ENC=USB\x20Receiver
E: ID_MODEL_ID=c52b
E: ID_PATH=pci-0000:00:14.0-usb-0:2:1.2
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1_2
E: ID_REVISION=1203
E: ID_SERIAL=Logitech_USB_Receiver
E: ID_TYPE=hid
E: ID_USB_DRIVER=usbhid
E: ID_USB_INTERFACES=:030101:030102:030000:
E: ID_USB_INTERFACE_NUM=02
E: ID_VENDOR=Logitech
E: ID_VENDOR_ENC=Logitech
E: ID_VENDOR_ID=046d
E: KEYBOARD_KEY_70004=b <--------
E: KEYBOARD_KEY_70005=a <--------
E: MAJOR=13
E: MINOR=82
E: SUBSYSTEM=input
E: USEC_INITIALIZED=397136693
私はそれを無視しようとします。
> cat /lib/udev/hwdb.d/70-keyboad.hwdb
# XXXX is the 4-digit hex uppercase vendor, and YYYY the 4-digit hex uppercase product.
# keyboard:usb:vXXXXpYYYY*
keyboard:usb:v046D*
# Logitech keyboard is overriding the A and B keys for some reason
KEYBOARD_KEY_70004=a
KEYBOARD_KEY_70005=b
役に立たない。
これをオーバーライドするために正しい一致を作成するにはどうすればよいですか?正しい一致を作成する方法に関するドキュメントが見つからず、どのルールが「KEYBOARD_KEY」エイリアスを挿入しているかが見つかりません。
答え1
ちょっと!私はBluetoothキーボードを持っていて、以前はudevを操作して操作しようとしましたが、あきらめて設定だけを残しました。
> grep KEYBOARD_KEY_70004 /etc/udev/hwdb.d/* /lib/udev/hwdb.d/*
/etc/udev/hwdb.d/90-bluetooth-keyboard.hwdb: KEYBOARD_KEY_70004=b
ドキュメントから
udevadm hwdb [オプション] /lib/udev/hwdb.bin でハードウェアデータベースインデックスを維持します。
--update Compile the hardware database information located in **/lib/udev/hwdb.d/**, **/etc/udev/hwdb.d/** and store it in /lib/udev/hwdb.bin. This should be done after any update to the source files; it will not be called automatically. The running udev daemon will detect a new database on its own and does not need to be notified about it.
ただし、正しい一致を作成する方法に関する文書がある場合は、その文書を教えてください。
乾杯