在Ubuntu中更改键盘映射
序言
我将重新编辑并发布在社团LT会上的演讲内容。
本试验基于将美式键盘的CapsLock键重新分配给全角半角键。
Ubuntuの事情
Ubuntuのデフォルトのディスイプレイサーバーが,数年前からX window systemからWaylandに変わっているため.情報の多いxmodmapやxkbの設定ファイルの構成といった方法は動作しない.そのため,キーマップの変更にあたっては,X window systemでもWaylandでも問題なく動作するudevを用いた方法を勧める.
请参考以下网站
上述的网站很详细。未在该网站上提及的信息会被总结在最后。
実際の変更手順
Udevでkeymapを変更する流れ
-
- キーボードを特定する
-
- キーを特定する
-
- 設定ファイルを作る
- 設定を再読込する
以下ではCapslockを全角半角に変えてみます.
1.キーボードを特定する
cat /proc/bus/input/devices
を実行する.

こんなのがいっぱい出てきます.そのなかから,キーボードっぽいやつを一つ選んで(Name や Handlersに注目),
I: Bus=0003 Vendor=…. Product=…. Version=….
をメモ.ちなみにUSBキーボードならBus=0003です.
2.キーを特定する
evtestを使おう.aptで落とせます.以下のようにコマンドを打てばインストールされます.
sudo apt install evtest
インストール後
sudo evtest

うまく行かなかったら,他のキーボードっぽいイベントを試してみましょう.多分どれかがちゃんと動きます.
运动状态:

我们把这个地方的”value”值记下来吧。
3. 创建设置文件。
我在/etc/udev/hwdb.d目录下创建了一个配置文件。
如果扩展名是.hwdb,可以用任何名称。
内容大致如下:
evdev:input:b....v....p....*
KEYBOARD_KEY_....=zenkakuhankaku
b….v….p….* 的部分,在键盘上特定的位置记录Bus、Vendor和Product的值。*是通配符,因此保持不变。
请将KEYBOARD_KEY_….处的内容替换为特定位置上键盘按键的值。
4. 設定を再読込する
端末で
sudo system-hwdb update
sudo udevadm trigger
と打てば完了
さいごに
在我的环境中,按下CapsLock键并没有任何反应,即使我已经应用了这个设置。在使用xev进行确认后,发现keysym(键的作用)已经消失了,所以无法分配给zenkakuhankaku。
由于这里汇总了一些可能可以使用的键,因此只需要从中逐一尝试,寻找一个替代ZenkakuHankaku的便利键。
经过尝试,发现将它分配给了Hiragana,并成功地实现了将CapsLock替换的目标。