一年前に中古で購入したwin11のゲーミングPCが常時ディスク使用率100%状態で、色々設定をいじっても治らず、SSDの交換も金がかかるし、基盤をぶっ壊したら悲惨なことになるので、思いっきってOSをwinから動作の軽いubuntuに変えた結果、ディスク使用率の問題は解決したが、キーボードの日本語・英語の切り替えキー云々で3日ぐらい手こずったので、備忘録も兼ねて記事を書いていく。
目的
winを使うとき、いつもCapsLockでIMEの無効化・有効化(英語・ひらがな入力の切り替え)をしていて、それが手に馴染んでいるため、ubuntuでも同様に、CapsLockで切り替えができるようにする。
試してうまく行かなかったこと
- Mozcの設定上で、CapsLockの動きを全角・半角キーと同じ動きにする
→ 設定がなぜか反映されずに失敗 - xmodmapでCapsLockと全角・半角キーを交換する
→ うまく反映されたが、特定のウィンドウははぜか適応されない - 同様にXKBでCapsLockと全角・半角キーを交換する
→ 設定コンフィグがエラーになり、うまく行かずに断念
色々調べたら、Ubuntu 22.04ではxkbはWaylandでは動かないのでxremap使ったほうがいいという記事があったので、それを使ってキーバインドをして行きます。なんでUbuntu 22.04ではxkbはWaylandでは動かないとか、Waylandとはなんなのかとはについては、私はインフラエンジニアじゃないし、興味がないので、そういうものだと思っておきます、目的はCapsLockで日本語・英語の切り替えをできるようにすることなので、その過程の知識は必要ないです。
手順
- Cargoのインストール
- xremapのインストール
- キーマッピング設定ファイルの作成
- xremapで設定ファイルを読み込み
Cargoのインストール
xremapはCragoでインストールする必要があるので、Cragoをインストールする。
sudo apt install cargo
インストールできるてるか確認。
sudo cargo -V
cargo 1.75.0
などのバージョンナンバーを表示されればインストール完了。
xremapのインストール
公式ドキュメントからインストールコマンドを参照し、以下のコマンドでインストールする
#xremapでコンフィグファイルを読み込む際、sudoコマンドで実行する必要があるため、sudoでインストールを行う
sudo cargo install xremap
同様にインストールできてるか確認する、なお、環境変数の設定はめんどくさいので、ディレクトリの記載が必要。
この場合、/root/.cargo/binのディレクトリにインストールされているので、下記のコマンドで確認。
sudo /root/.cargo/bin/xremap -V
xremap 0.8.18
などのバージョンナンバーを表示されればインストール完了
キーマッピング設定ファイルの作成
最難関です、というのも公式ドキュメントを見ても、全角・半角キーのキーシンボル(コンフィグファイルで記載するキーの名前)の記載例がないのでかなり困りました。
Ubuntu 22.04 + Wayland Xremapで変換キーとの組み合わせをリマップ
上記記事によりますと、xevで確認したキーコードに8を引いた値を、https://github.com/emberian/evdev/blob/1d020f11b283b0648427a2844b6b980f1a268221/src/scancodes.rs#L26-L572 のコードで探すとそのキーシンボルがわかるとのこと。8引くとかなんでやねん
今回交換する、CapsLockと全角・半角キーのキーコードをxev
コマンドで調べる。
xev
それぞれ2回表示されるのは、おそらくキーを押して、離してで2回判定があるものかと思われる。
CapsLockのキーコードは66、全角半角は49なので、それぞれに8引いて、58と41だね。8引くとかなんでやねん(二回目)
https://github.com/emberian/evdev/blob/1d020f11b283b0648427a2844b6b980f1a268221/src/scancodes.rs#L26-L572 を見ると、それぞれのキーシンボルは、KEY_CAPSLOCK
とKEY_GRAVE
でKEY_
は省略可能なので、CAPSLOCK
とGRAVE
はキーシンボルになる。
それらを踏まえて、以下のファイルを作成、ファイル名はxremap.yml
とし、ホームディレクトリに保存。
keymap:
- name: Swap CapsLock and Zenkaku_Hankaku
remap:
CapsLock: Grave
Grave: CapsLock
xremapで設定ファイルを読み込み
下記コマンドをホームディレクトリで実行する。
sudo /root/.cargo/bin/xremap xremap.yml
あとは自動で、xremapが自動的に接続機器を読み込んで、実行状態となる、下の画像が表示されれば設定が適応された状態となる。
なお、この状態では、ターミナルを閉じると、プロセスが中断されるため、nohup
で実行する。
nohup sudo /root/.cargo/bin/xremap xremap.yml
ゲームなどをする際は、めんどくさいがpgrep
コマンドでプロセスIDを特定し、sudo kill
でプロセスを終了する
いちいちコマンド打つのがめんどくさいなら、GUIアプリケーションを作成しよう!気が向いたら、そのうちGUIアプリケーションを作成して、配布するかもしれません。
最後に
軽い気持ちでubuntuを使ったが、winと比べていろんなことを自分でやらないと行けないっていう大変さを知って、winとmacの素晴らしさを再認識した、まぁ、有料だから当たり前っちゃ当たり前かもしれないが、、
それでもwinはバージョンを重ねるごとに、要求リソースが高くなるため、古いPCを使うのであれば、ubuntuがよいのかもしれません。