背景
Fujitsu LIFEBOOK UH01006にLenovo ThinkPad S1 Yogaから乗り換えた所、キーボード右下のaltキーが無いためaltを押しながら矢印の左右でブラウザの戻るや進むの操作ができないのがとても不便でした。何とかならないかと調べた所、カーネル用のデバイス管理ツールであるudevで特定のキーボードの特定のキーの挙動を変える設定方法を把握してalt化できたので、備忘録として記事に残します。
下記の記事がとても参考になりました。
Ubuntuでキーマップを変更する
なお、Fujitsuのキーボードの右下にaltが無い構成はこの記事を書く14年前の2012年以前から続いている(皆さん『Alt+←』ショートカットをどうしていますか?)ようなので、Fujitsuとしてはこのまま維持していきそうです。
使ったもの
PC: Fujitsu LIFEBOOK UH01006OS: ubuntu24.04
キーのイベントを特定
evtestでキーボードのキーを押したときの動きを見ます。aptでインストールしてから使います。
sudo apt install evtest
下記のコマンドでevtestを起動できるので、監視したい装置を選びます。
/dev/input/event* の*のところの数字を入力します。
sudo evtest
いくつか試した所LIFEBOOKの内蔵キーボードは「/dev/input/event2: AT Translated Set 2 keyboard」でした。
event2なので「2」を入力してエンターを押すとキーのイベントを見れます。
キーボード右下のaltになって謎の欲しいキー(アプリケーションキーと言うらしい)を押すと下記の情報が表示されました。
Event: time 1772354106.446165, -------------- SYN_REPORT ------------
Event: time 1772354110.524932, type 4 (EV_MSC), code 4 (MSC_SCAN), value dd
Event: time 1772354110.524932, type 1 (EV_KEY), code 127 (KEY_COMPOSE), value 1
Event: time 1772354110.524932, -------------- SYN_REPORT ------------
Event: time 1772354110.621169, type 4 (EV_MSC), code 4 (MSC_SCAN), value dd
Event: time 1772354110.621169, type 1 (EV_KEY), code 127 (KEY_COMPOSE), value 0
Event: time 1772354110.621169, -------------- SYN_REPORT ------------
上記のtype 4のイベントのvalueである「dd」を後で使います。
value dd
キーボードのBus, Vendor, Productを把握
入力装置の情報を一覧表示できる下記のコマンドを実行し、evtestで確認したのと同じ名前の装置(この記事の場合はAT Translated Set 2 keyboard)を探します。cat /proc/bus/input/devices
ありました。
I: Bus=0011 Vendor=0001 Product=0001 Version=ab83
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input2
U: Uniq=
H: Handlers=sysrq kbd event2 leds
B: PROP=0
B: EV=120013
B: KEY=402000007 ff803078f800d001 7effffdfffcfffff fffffffffffffffe
B: MSC=10
B: LED=7
示されているBus, Vendor, Productを後で使います。
Bus=0011 Vendor=0001 Product=0001
udevでキーの挙動を設定
/etc/udev/hwdb.d/にhwdbファイルを作ります。割り当てたいkey map(キーの挙動)は下記のページから探せます。
https://hal.freedesktop.org/quirk/quirk-keymap-list.txt
今回は右altを割り当てたいのでkey mapとして「rightalt」と書きます。
下記の方式でbus_id, vendor_id, product_id, key_value, key_map
evdev:input:b<bus_id>v<vendor_id>p<product_id>*
KEYBOARD_KEY_<key_value>=<key_map>
今回は「Bus=0011 Vendor=0001 Product=0001」のキーボードの「value dd」のキーを右alt(rightalt)として動かすために下記のファイルを作成しました。
/etc/udev/hwdb.d/fujitsu_lifebook.hwdb
evdev:input:b0011v0001p0001*
KEYBOARD_KEY_dd=rightalt
ファイルを作成したら設定を読み直してudevに反映させます。
sudo systemd-hwdb update
sudo udevadm trigger
キーの挙動が変わっていれば成功です。
全角半角キーを割り当てたい場合はzenkakuhankakuではなくgrave
参考にした記事(Ubuntuでキーマップを変更する)では全角半角の割当に失敗していましたが、zenkakuhankakuではなくgraveを指定したら全角半角切替可能でした。KEYBOARD_KEY_dd=grave
元から付いている全角半角キーの挙動をevtestで確認して把握しました。
Event: time 1772376004.890185, type 4 (EV_MSC), code 4 (MSC_SCAN), value 29
Event: time 1772376004.890185, type 1 (EV_KEY), code 41 (KEY_GRAVE), value 1
Event: time 1772376004.890185, -------------- SYN_REPORT ------------
Event: time 1772376005.016129, type 4 (EV_MSC), code 4 (MSC_SCAN), value 29
Event: time 1772376005.016129, type 1 (EV_KEY), code 41 (KEY_GRAVE), value 0
Event: time 1772376005.016129, -------------- SYN_REPORT ------------
おわり
期待通りにubuntuで動かすFujitsu LIFEBOOK UH01006の右下の謎のキー(アプリケーションキーと言うらしい)を右altとして操作可能になりました。やりたい設定を実現できて良かったです。
参考
Ubuntuでキーマップを変更するquirk-keymap-list.txt
スキャンコードをキーコードにマップ


0 件のコメント :
コメントを投稿