Linux MintでCaps LockキーをCtrlキーに割り当てても状態が保存されない問題

ほとんどのキーボードは、Aの横にCaps Lockがあります。

しかし、このキーは無用の長物と言ってもいいような存在で、こんなところにあるぐらいなら、Ctrlがあった方がよっぽど便利です。

そのため、Caps LockCtrlに割り当てる人がけっこういます。

Ubuntuのときは、Caps LockCtrlに割り当てるのがけっこう面倒だったんですが、Linux Mintでは特殊キーの機能を変更するツールが用意されており、簡単に変更できます。

パネル左端のメニューから、設定キーボードを実行します。
「レイアウト」タブをクリックし、右下の「オプション…」をクリックします。

「Caps Lock behavior」の▶をクリックし、「Caps Lock is also a Ctrl」をクリックします。

これで、Caps LockCtrlになりました。

めでたし、めでたし、

と言いたいところですが、どういうわけか、OSを再起動すると設定が無効になってしまうのです。

「キーボードレイアウトのオプション」の設定は残っているのに・・・

しょうがないので、いったん「デフォルト」をクリックして、もう一度「Caps Lock is also a Ctrl」をクリックして設定が効くようにしています。

しかし、パソコンを立ち上げるたびにこの操作をしなくてはならないのは、地獄のような苦しみです。

なんとかならないものでしょうか。

ちなみに、ログアウト⇒再ログインの場合は、設定は生きてます。

快適なLinux Mint生活を送るためにも、なんとしてもこの問題を解決しなければなりません。

※この記事は、Linux Mint 20 Cinnamonでの挙動について書いています。

Linuxのキーマップについて調査する

ネットで調べたところ、以下のことがわかりました。
([参考サイト] XKBでCapsLockをEscに割り当てる)

1. 以下のコマンドでキーマップの状態を表示できる。

$ setxkbmap print

2. Caps Lockの設定
/usr/share/X11/xkb/symbols/capslock

3. Ctrlの設定
/usr/share/X11/xkb/symbols/ctrl

4. /var/lib/xkb/ディレクトリの中にコンパイルされたキーマップが格納される。
このディレクトリの中にあるファイルは、Xサーバーや他のツールによって削除されたり置き換えられたりする。

これらの情報を元に、「キーボードレイアウトのオプション」でCaps Lockの設定を変えてみて、ファイルの内容がどのように変化するのかを調べました。

自動起動アプリケーションでスクリプトを立ち上げる

〜数時間後〜

どうにもこうにも埒が明かないので、別の手段を講じることにしました。
ホームディレクトリ(ここでは/home/ux68k)に以下のような内容でスクリプトファイルを作成します。

■caps_as_ctrl.sh

#!/bin/bash

setxkbmap -option 'ctrl:nocaps'

実行ビットを立てます。

$ chmod u+x caps_as_ctrl.sh

設定自動起動させるアプリケーションを実行します。

+(プラスボタン)をクリックし、「Custom command」を実行します。
Command欄に上記スクリプトの絶対パスを入力します。
その他の項目は適当で構いません。

再起動すれば、Caps LockCtrlとして使えるようになります。

抜本的解決策

「キーボードレイアウトオプション」ですべてのチェックを外した後、

$ setxkbmap -print

を実行すると、xkb_symbolsの行が

xkb_symbols   { include "pc+jp+inet(evdev)"	};

のようになります。
ところが、パソコンを再起動してみると、この行が

xkb_symbols   { include "pc+jp+inet(evdev)+terminate(ctrl_alt_bksp)"	};

となってしまうのです。
調べたところ、「terminate(ctrl_alt_bksp)』はCtrl+Alt+BackSpaceで、X-Windowシステムを再起動する設定のようです。

なぜ、こんな設定がされてしまうのかというと、「自動起動させるアプリケーション」の「Ctrl Alt Backspace」というプログラムが原因でした。

どうも、このプログラムがCaps Lockの設定を元に戻しているような予感がします。

そこで、このプログラムをオフにしたところ、「キーボードレイアウトオプション」の設定が効くようになりましたとさ。😆