Arch Linux x64で明るさ制御キー(fn +矢印)が機能するようにします。
そのため、次のコマンドを使用して統合ps / 2ノートブックキーボードのudevルールを確認しました udevadm info
。
P: /devices/platform/i8042/serio0/input/input4/event4
N: input/event4
L: 0
S: input/by-path/platform-i8042-serio-0-event-kbd
E: DEVPATH=/devices/platform/i8042/serio0/input/input4/event4
E: DEVNAME=/dev/input/event4
E: MAJOR=13
E: MINOR=68
E: SUBSYSTEM=input
E: USEC_INITIALIZED=26133209
E: KEYBOARD_KEY_74=prog1
E: KEYBOARD_KEY_75=www
E: KEYBOARD_KEY_78=mail
E: KEYBOARD_KEY_82=!switchvideomode
E: KEYBOARD_KEY_83=!battery
E: KEYBOARD_KEY_84=!prog1
E: KEYBOARD_KEY_86=!wlan
E: KEYBOARD_KEY_88=!brightnessup
E: KEYBOARD_KEY_89=!brightnessdown
E: KEYBOARD_KEY_b1=!prog2
E: KEYBOARD_KEY_b3=!prog3
E: KEYBOARD_KEY_b4=!wlan
E: KEYBOARD_KEY_c5=!prog3
E: KEYBOARD_KEY_d5=!wlan
E: KEYBOARD_KEY_f7=!f22
E: KEYBOARD_KEY_f9=!f23
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_INPUT_KEYBOARD=1
E: ID_BUS=i8042
E: ID_SERIAL=noserial
E: ID_PATH=platform-i8042-serio-0
E: ID_PATH_TAG=platform-i8042-serio-0
E: LIBINPUT_DEVICE_GROUP=11/1/1:isa0060/serio0
E: DEVLINKS=/dev/input/by-path/platform-i8042-serio-0-event-kbd
E: TAGS=:power-switch:
これhttps://wiki.archlinux.org/index.php/Map_scancodes_to_keycodes構文構造がKEYBOARD_KEY_<scancode>=<keycode>
キーコードをスキャンコードにバインドすると仮定します。利用可能なキーコードのリストがあります。ここ。
ご覧のとおり、88および89スキャンコードは明るさキーコードに接続されています(または接続されていませんか?)。これは絶対に正確です。実行中に明るさキーを押してみました。evtest
これによりスキャンコード88と89が生成されました(ただし、キーコード情報がありません)。実行中にこのキーを押すと、journactl -f
次のものが印刷されます。atkbd serio0: Unknown key pressed (translated set 2, code 0x88 on isa0060/serio0).
それで、質問は「!」が何をしているのか理解できないということです。キーコードの前の記号は何を意味しますか? udev ドキュメントにこの構文例が見つかりません。
私はこの構造がスキャンコードからキーのバインドを解除すると思います。それから私はパニックになります。このルールを作成した開発者は、なぜこの絶対に正しいキーをバインド解除するのですか?
答え1
~から/lib/udev/hwdb.d/60-keyboard.hwdb
# An '!' as the first character of the key identifier string
# will add the scan code to the AT keyboard's list of scan codes
# where the driver will synthesize a release event and not expect
# it to be generated by the hardware.
ソースコードにある以外には「文書」がないようですsystemd
。hwdb(7)
関連する言及はありません。