2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntuでキーマップを変更する

Last updated at Posted at 2023-07-19

前説

サークルのLT会で発表した内容を再編集して投稿します.

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

Ubuntuの事情

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

参考サイト

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

実際の変更手順

Udevでkeymapを変更する流れ

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

以下ではCapslockを全角半角に変えてみます.

1.キーボードを特定する

cat /proc/bus/input/devices

を実行する.

image-2.png

こんなのがいっぱい出てきます.そのなかから,キーボードっぽいやつを一つ選んで(Name や Handlersに注目),

I: Bus=0003 Vendor=.... Product=.... Version=....

をメモ.ちなみにUSBキーボードならBus=0003です.

2.キーを特定する

evtestを使おう.aptで落とせます.以下のようにコマンドを打てばインストールされます.

sudo apt install evtest

インストール後

sudo evtest

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

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

動いた様子:

image-4.png

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

3.設定ファイルを作る

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

/etc/udev/hwdb.d/*.hwdb
evdev:input:b....v....p....*
    KEYBOARD_KEY_....=zenkakuhankaku

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

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

4. 設定を再読込する

端末で

sudo systemd-hwdb update
sudo udevadm trigger

と打てば完了

さいごに

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

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

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?