こんばんは。
この動画で紹介れていたCapslockをレイヤーキー化してホームポジションから手を動かさずにバックスペースとかカーソルキーとかを操作するやつ、異様に便利ですよね。
しかし私は宗教上の都合でなるべくWindowsを使いたくないので、Ubuntuで同じようなことを実現する方法を探しました。結果、すげ〜綺麗に解決できたのでやり方をまとめておきます。ちなみにOSのバージョンは23.10を想定しています。
Capslockをレイヤーキーにする
上記の動画では割り当てをF13に変えていましたが、UbuntuだとHyperキーとかいう謎のキーの割り当てが空いている&変更が楽なのでHyperキーで行きます。
まずはtweaksをインストール
sudo apt install -y tweaks
アプリアイコンをクリックして起動
キーボードとマウス→アクティビティ画面のショートカット→追加のレイアウトオプション
Caps Lock behaviorを「Caps Lockを追加のHyperにする」にチェックをつける
そうしたら再起動して、晴れてCapslockキーはレイヤーキーに生まれ変わりま…
まだ作業は続きます。
この設定だけだとなぜかSuperキー(Windowsキーに相当するやつ)と競合しており、Superキーとしては機能しません。
再起動後
open /usr/share/X11/xkb/symbols/capslock
でxkbのCapslock設定ファイルを開き
xkb_symbols "hyper" {
~中略~
};
の部分を
xkb_symbols "hyper" {
key <CAPS> { [ VoidSymbol ] };
modifier_map Mod3 { <CAPS> };
modifier_map Mod3 { <HYPR> };
};
のように書き換えます。保存したら再起動し、これでやっとCapslockキーはHyperキーとして振る舞うようになりました。
ちなみにこの方法は以下のブログで知りました。この場を借りてお礼申し上げます。マジであざす。
※この方法ではUbuntuをアップグレードした際に上書きされるらしいです。ujimushiさんはhomeディレクトリの/.configフォルダ内にある設定ファイルを弄ることを推奨sれていました。
キー入力をコマンドでエミュレートできるようにする
xteをインストール
sudo apt install xautomation
これでターミナル経由でキー入力をエミュレートできるようになります。例えば
xte 'key Return'
でエンターキーを入力できます。
ショートカットを設定する
いよいよ大詰めです。
設定→キーボード→ショートカットの表示とカスタマイズから
独自のショートカット
+ボタンから、例えばバックスペースを設定したいのであれば
のように設定します。xteコマンドの詳細については
xte -help
で詳しく出てくるので、それを読んでください。
いかがでしたか?
tweaksとxte、あとはUbuntuの標準機能のみで実現することができました。ちなみに私は大体以下のように設定しています。
では。