jack blog
作者一覧
サイト移転のお知らせ
jack-webは下記のアドレスに移動しました
2023-09-24

[LT記事化]Ubuntuのキーマップを変更する方法

槫林(えんぴつ)槫林(えんぴつ)

前説

LT会にて発表した内容を再編集してお届けしています.

US配列キーボードのCapsLockを全角半角に割り当て直す試みをもととしています.

Ubuntuの事情

Ubuntuのデフォルトのディスイプレイサーバーが,数年前からX window systemからWaylandに変わっているため,情報の多いxmodmapやxkbの設定ファイルの構成といった方法は動作しません.そのため,キーマップの変更にあたっては,X window systemでもWaylandでも問題なく動作するudevを用いた方法を勧めます.

参考サイト

http://iranoan.my.coocan.jp/essay/pc/202104020.htm

上記サイトが詳しいです.上記サイトに記載がなかった情報はさいごににまとめてあります.

実際の変更手順

Udevでkeymapを変更する流れ

  1. キーボードを特定する
  2. キーを特定する
  3. 設定ファイルを作る
  4. 設定を再読込する

以下では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

で,インプットイベントをモニタするか聞いてくれます. キーボードっぽいやつを選んでCapsLockを押してみよう.

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

動いた様子:

ここの,"value"の値をメモっておきましょう.

3.設定ファイルを作る

/etc/udev/hwdb.dに設定ファイルを作ります. 名前は拡張子が.hwdbなら何でもOK. 内容はこんな感じ:

evdev:input:b....v....p....*
    KEYBOARD_KEY_....=zenkakuhankaku

b....v....p....* のところは,キーボードを特定のところでメモったBus,Vendor,Productの値を入れます.*はワイルドカードなのでそのまま.

KEYBOARD_KEY_....のところは,キーを特定のところでメモったValueの値を入れましょう

4. 設定を再読込する

端末で

sudo system-hwdb update
sudo udevadm trigger

と打てば完了

さいごに

私の環境では,この設定を反映した状態でCapsLockを押してもなんの反応もありませんでした. xevで確認してみるとkeysym(キーの役割)が消えていたのでzenkakuhankakuは割り当てられない様子.

https://hal.freedesktop.org/quirk/quirk-keymap-list.txt

に使用できる可能性のあるキーがまとまっているので,この中から地道に試して,ZenkakuHankakuの代わりの都合の良いキーを探してみると, Hiraganaが割り当てられ,CapsLockを置き換える目的が達成されました.

おすすめ記事