ほとんどのキーボードは、Aの横にCaps Lockがあります。
しかし、このキーは無用の長物と言ってもいいような存在で、こんなところにあるぐらいなら、Ctrlがあった方がよっぽど便利です。
そのため、Caps LockをCtrlに割り当てる人がけっこういます。
Ubuntuのときは、Caps LockをCtrlに割り当てるのがけっこう面倒だったんですが、Linux Mintでは特殊キーの機能を変更するツールが用意されており、簡単に変更できます。
パネル左端のメニューから、設定 ⇒ キーボードを実行します。
「レイアウト」タブをクリックし、右下の「オプション…」をクリックします。
「Caps Lock behavior」の▶をクリックし、「Caps Lock is also a Ctrl」をクリックします。
これで、Caps LockがCtrlになりました。
めでたし、めでたし、
と言いたいところですが、どういうわけか、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 LockがCtrlとして使えるようになります。
抜本的解決策
「キーボードレイアウトオプション」ですべてのチェックを外した後、
$ 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の設定を元に戻しているような予感がします。