Ibus-Anthy での漢字かな変換の切り替えを 右Alt にする (Debian Gnome + Wayland)
対象:
- AXキーボードの設定で、Windows では 右Alt を[漢字]キーにしている人で、ibus でも同じようにキーを使いたい人
ex: Windowsで右Altキーに[漢字]キーを割り当てる方法(AXキーボード設定を利用する方法) - Fcitx 5 ではAltキー単体でショートカットキー登録できるが、ibus ではできないので、その回避策
- Fcitx 5 を利用しても 一部のアプリ (Firefoxなど) では Alt キーとして動いてしまい、ハイライトがメニューに移ってしまう動きの回避
<参考>
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 で漢字かな変換の切り替えができることを確認する。
/etc/udev/hwdb.d/70-niseAX-keyboard.hwdb
の説明
6 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.hwdb
の 70-
は、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
に代入する値は、以下より
利用できそうなものは、
- zenkakuhankaku
- f13 ~ f24
なのですが、zenkakuhankaku を指定しても、ibus の変換は切り替わりませんでした。
f13 を利用すると、Gnome Settings が機動します。
結果として f14 を利用します。
7 終わりに
Ibus-Anthy でしか確認していないが、Ibus-Mozc, Ibus-SKK でも利用できるはず。
Fcitx 5 でも同様に利用できるはず。
同様の方法でキーの変更ができるはず。
Discussion