Ubuntu 23.04でgnome-tweaksというパッケージをインストールするとTweaksというアプリケーションが使えるようになります。起動するとメニューの中にキーボードとマウスという項目があるので選択し
キーボードの中の[追加のレイアウトオプション」ボタンをクリックすると追加のレイアウトオプションというタイトルのウィンドウがポップアップします。
そのメニューの中にCapsLock behaviourという項目をクリックすると次の階層の選択肢が展開されるので、その中から
を選択します。
すると確かにCapsLockキーを押すとBackspaceの動作はするんですが、CapsLockの動作も続けていて、CapsLockキーを押すたびにカーソルの直前の文字が消えるとともにキーボードのCapsLockランプもついたり消えたりして、ついている状態でアルファベットのキーを打鍵すると大文字が入力されます。
これでは望んでいる動作とは違っていて実用になりませんし、検索してみても、この設定を使っている人が少ないのか、他の人のところではうまく動いているのか、思わしい情報も見つからず困っていました。がんばって検索しているうちにUbuntu Linux、Zorin OS liteで、「CapsLock」キーを「BackSpace」キーに変更する方法。というページに行き当たり、書かれている内容を参考にして、望んでいる動作にこぎつけましたので、ここでご紹介します。ただし、披露する設定ファイルの内容は、いろんなWebページを参考にしつつ試行錯誤を続けた結果で、自分でも説明がつかないので、その点はご勘弁下さい。
まずTweaksでCapsLockを追加のBackspaceにするを選択した状態で、端末のシェルで、上述のページに書かれている
setxkbmap -option shift:both_capslock
を実行したところ
WARNING: Running setxkbmap against an XWayland server
という警告が出てしまいました。そこで一旦ログアウトし、ログイン画面でユーザを選択すると画面右下に表示される歯車アイコンをクリックして、メニューの選択をUbuntuからUbuntu on Xorgに変更した上でパスワードを打鍵してログインし、もう一度、端末で
setxkbmap -option shift:both_capslock
を実行したところ、見事にCapsLockの動作を止めることができました。それでは、というので$HOME/.config/autostartの下に
[Desktop Entry] Type=Application Exec=/usr/bin/setxkbmap -option shift:both_capslock Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true Name[ja]=blah blah Name=blah blah Comment[ja]= Comment=
という内容でsetxkbmap_capslock.desktopというファイルを作って(このファイルが、なんで、ここにあって、こういう内容なのか、今となってはわからず説明できんのです ;-p)、ログアウト、再ログインしてみたんですが、Caps Lockの動作は残ったままになってしまいました。ちょっとごにょごにょしてみた結果、どうもtiming issueのような気がしたのでExec=
行で実行するコマンドを
#!/bin/sh sleep 30; setxkbmap -option shift:both_capslock
という内容のwrapperスクリプトに変更して試したところ、望んでいる動作が実現できました。
試していくうちに、手許の環境ではsleepは30秒もさせなくても10秒でじゅうぶんであることがわかったのと、「CapsLockを追加のBackspaceにする」という目的のための設定がGUIのTweaksと、このwrapperスクリプトの2ヶ所にまたがっているのは見通しが悪いのでTweaksの設定は無効に戻した上で、wrapperスクリプトの中でsetxkbmap -option caps:backspace
も実行するようにまとめて、結局
#!/bin/sh sleep 10; setxkbmap -option caps:backspace; setxkbmap -option shift:both_capslock
という内容にして使っています。
余談ですが、今、使っているキーボードは、キータッチだけでなくAltとその隣のキーのビミョーな位置にこだわって選んだサンワサプライのSKB-KG3WN2で、CapsLockキーにBackspaceを割り当てているのに加えてTweaksの追加のレイアウトプションの中ではCtrl position以下の
と
を有効にして、左右ともホームポジションから指を手前に降ろしてくると、薬指がAlt(これはデフォルトのまま)、小指がCtrlになるようにして使っています。なお、筆者は全然Lisperではありません。