♨️

Ibus-Anthy での漢字かな変換の切り替えを 右Alt にする (Debian Gnome + Wayland)

2022/11/19に公開

対象:

<参考>
Ubuntu でキーマップの変更
スキャンコードをキーコードにマップ

1 準備 evtest コマンド の導入

evtest コマンドを利用するので導入する

# apt install --no-install-recommends evtest

manpages : EVTEST(1)

2 キーボードの情報を調べる

2-1 デバイス名

/proc/bus/input/devices

$ cat /proc/bus/input/devices



結果確認
マウス、スピーカーなども出てくるので、キーボードを特定する。

I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input0
U: Uniq=
H: Handlers=sysrq kbd leds event0 


2-2 keymap

/dev/input/event*
※ 個人ユーザでは /dev/input/event* へアクセスするのにパーミッションが足りないので、rootユーザで実施

# evtest


デバイスの選択が必要となるので、数字を入力

No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:	AT Translated Set 2 keyboard
/dev/input/event1:	VirtualPS/2 VMware VMMouse
/dev/input/event2:	VirtualPS/2 VMware VMMouse
/dev/input/event3:	VMware VMware Virtual USB Mouse
/dev/input/event4:	Power Button
/dev/input/event5:	PC Speaker
Select the device event number [0-5]: 0


最初から /dev/input/event0 がキーボードと分かっているケースであれば以下の入力でもよい。

# evtest /dev/input/event0 


押したキーの情報が出力されるので、右Alt を押して出力結果を確認する。

Event: time 1668814688.505245, -------------- SYN_REPORT ------------
Event: time 1668814689.968233, type 4 (EV_MSC), code 4 (MSC_SCAN), value b8
Event: time 1668814689.968233, type 1 (EV_KEY), code 100 (KEY_RIGHTALT), value 1
Event: time 1668814689.968233, -------------- SYN_REPORT ------------
Event: time 1668814689.969356, type 4 (EV_MSC), code 4 (MSC_SCAN), value b8
Event: time 1668814689.969356, type 1 (EV_KEY), code 100 (KEY_RIGHTALT), value 0

上記より、キーはb8、KEY_RIGHTALT として認識されている事がわかる。

evtest を止める。
新しいコンソールを開いて、evtest を kill もしくはコンソールを閉じる。

3 keymap 設定の追加

作成するファイル /etc/udev/hwdb.d/70-niseAX-keyboard.hwdb

70-niseAX-keyboard.hwdb

evdev:input:b0011v0001p0001*
 KEYBOARD_KEY_b8=f14


rootユーザで作業、ファイル作成

# cd /etc/udev/hwdb.d/
# vi 70-niseAX-keyboard.hwdb


ファイル作成結果

# cat 70-niseAX-keyboard.hwdb
evdev:input:b0011v0001p0001*
 KEYBOARD_KEY_b8=f14


4 keymap 設定の反映

Hardware Database のアップデート

# systemd-hwdb update


udev の変更
manpages: UDEVADM(8) -c, --action=ACTION

# udevadm trigger


再起動 (定義を削除している場合は、再起動要※)

# reboot


スキャンコードをキーコードにマップ

udevadm は追加・変更したキーマッピングしかロードしないため注意してください。コンフィグファイルからマッピングを削除した場合、hwdb.bin を再ビルドして # udevadm trigger を実行して、さらに再起動を行わないと削除されたマッピングがカーネルに残り続けます。

反映の確認

# evtest


code 100 (KEY_RIGHTALT) → code 184 (KEY_F14) となっていることが確認できる

Event: time 1668834190.346255, -------------- SYN_REPORT ------------
Event: time 1668834191.978729, type 4 (EV_MSC), code 4 (MSC_SCAN), value b8
Event: time 1668834191.978729, type 1 (EV_KEY), code 184 (KEY_F14), value 1
Event: time 1668834191.978729, -------------- SYN_REPORT ------------
Event: time 1668834191.979122, type 4 (EV_MSC), code 4 (MSC_SCAN), value b8
Event: time 1668834191.979122, type 1 (EV_KEY), code 184 (KEY_F14), value 0


5 Ibus-Anthy でのショートカット登録

Key Code の行 [...] をクリックして、ショートカットとして登録するキーを押し認識させる。
その後、[add] を押すと登録される。
(Anthy では F14 は Launch5 と認識されている)



設定後、右Alt で漢字かな変換の切り替えができることを確認する。

6 /etc/udev/hwdb.d/70-niseAX-keyboard.hwdb の説明

manpages : HWDB(7)

元々利用されているデバイス情報は/usr/lib/udev/hwdb.d 以下にあり

$ cd /usr/lib/udev/hwdb.d
$ ls -1


60以上のもの

60-autosuspend-chromiumos.hwdb
60-autosuspend-fingerprint-reader.hwdb
60-autosuspend.hwdb
60-evdev.hwdb
60-input-id.hwdb
60-keyboard.hwdb
60-seat.hwdb
60-sensor.hwdb
65-libwacom.hwdb
70-analyzers.hwdb
70-av-production.hwdb
70-cameras.hwdb
70-joystick.hwdb
70-mouse.hwdb
70-pda.hwdb
70-pointingstick.hwdb
70-touchpad.hwdb
80-ieee1394-unit-function.hwdb
95-upower-hid.hwdb


70-niseAX-keyboard.hwdb70- は、60-keyboard.hwdb に上書きするので、70にしています。

evdev:input: の値は、2-1 デバイス名 で収集した以下の情報より作成

I: Bus=0011 Vendor=0001 Product=0001 Version=ab41


evdev:input: の書式

evdev:input:b<bus_id>v<vendor_id>p<product_id>e<version_id>-<modalias>

(<modalias> は無しで利用できている。)

KEYBOARD_KEY_<scancode>=<keycode>KEYBOARD_KEY_b8 となる、元情報は以下より。

type 4 (EV_MSC), code 4 (MSC_SCAN), value b8


KEYBOARD_KEY_b8 に代入する値は、以下より
https://hal.freedesktop.org/quirk/quirk-keymap-list.txt
利用できそうなものは、

  • zenkakuhankaku
  • f13 ~ f24

なのですが、zenkakuhankaku を指定しても、ibus の変換は切り替わりませんでした。
f13 を利用すると、Gnome Settings が機動します。
結果として f14 を利用します。

7 終わりに

Ibus-Anthy でしか確認していないが、Ibus-Mozc, Ibus-SKK でも利用できるはず。
Fcitx 5 でも同様に利用できるはず。
同様の方法でキーの変更ができるはず。

Discussion