(Poor :-)English page is available.
これまでも「CapsLockを追加のBackspaceにする」など、キー割り当てを変更していたんですが、Ubuntu 26.04 LTSをインストールしたときに、Geminiで設定方法の情報を収集してみました。以下、Geminiからの受け売りの情報ばかりです。
使っているキーボードはサンワサプライのSKB-KG2WM2で、この割当により、ホームポジションから自然に手を降ろしてくると、左右の薬指でAltが(これはデフォルトのまま)、小指でControlが押せるようになります。これは、Shift、Control、Altなどのmodifierキーは、適用対象の文字キーとは反対の手で押すべきだという考え方に基づいています。例えばControl-PはControlを左手の小指で、Pを右手の小指で、Control-QはControlを右手の小指で、Qを左手の小指で、という要領です。Menuキーがなくなってしまいますが、元々使っていなかったので、よしとしましょう。
Caps LockキーにBack Spaceを割り当てているのは、space-cadet系キーボードのRub Outの真似です。厳密なことを言うと、Rub Outキーを押すとBack Space(0x08)ではなくDelete(0x7F)が送出されるらしいので、Caps LockキーにはDeleteを割り当てて、stty eraseで調整するのがストイックなんでしょうけど、とりあえず今の設定でいいことにしておきます。ちなみにspace-cadet系のキーボードでは、MetaはControlより外側に配置されていて、この割当や101キーとは逆順になっています。
なお、筆者は全然Lisperではありませんし、この後、Emacsについても言及しますけれど、手に馴染んでいるプライマリのエディタはviで、無節操なので宗教戦争には参戦せず、便利な場面ではEmacsも、ちょろっと程度に使っています。Emacsの利用頻度は低いんですけど、長年使っていたControlキーはAの左隣り、の配列から、この配列に転向して、息をするぐらいの頻度で触るbash(をはじめとするGNU readline)の使い勝手が格段によくなって、「そうか、あの人たち(よくわかっていませんけど1970年代のアメリカの大学の人々?)は、こんないい物を使っていたのか!」と感動しました。
背景事情をつい熱弁してしまいましたが、「やりたいこと」をGeminiに与えて情報を収集してみました。
得られた情報を元に
gsettings set org.gnome.desktop.input-sources xkb-options "['caps:backspace', 'altwin:meta_win', 'ctrl:swap_lwin_lctl', 'ctrl:menu_rctrl']"
を実行してみたところ、端末の中や、Back SpaceだけですがFirefoxのテキストボックス等の中でもうまく動作しました。
gsetting(1)のマニュアルを見ても
Name
gsettings - GSettings configuration tool
SYNOPSIS
gsettings set SCHEMA*[:*PATH] KEY VALUE
と書かれているばっかりで、持ち合わせている知識ではさっぱりわからないんですが、名前から想像するに、影響の及ぶ範囲はGNOMEのアプリケーションだけなんでしょう。sudoで特権昇格せずに実行してもエラーにならず期待した動作が得られたこと、その後も同じホストの別のユーザには影響が及んでいなかったことから、system wideではなくユーザ単位の設定のようです。一度実行すると、ログアウトやシャットダウンしてから、次回ログインしたときにも動作は維持されていたので、まだ発見できていませんけど、ホームディレクトリの下のどこかに設定を書き出しているのではないかと思います。
第1引数のsetは設定を意味していて、他にgetやresetなどを与えることができるようです。それ以降の各引数については、言っていることの雰囲気は感じられるものの、自分でこの設定を見つけるためには、どうやって調べればいいのかは、さっぱりわからず、天下りで言いなりになっています。
しかし、実は24.04LTSのころから既におかしかったので-nwオプションで回避していたんですけど、GUI版のEmacsで
という問題が起きるので、これもGeminiで情報を収集したところ、shellでEmacsを起動するより前に
setxkbmap jp -option "" -option "caps:backspace,altwin:meta_win,ctrl:swap_lwin_lctl,ctrl:menu_rctrl"
を実行し、さらに.emacsに
(setq x-alt-keysym 'meta) (define-key global-map "×" 'execute-extended-command)
を追加することにより解決しました。setxkbmapはgsettingsとはちがって毎回実行しなければならないようなので、.bashrcに追加しました。