LinuxでもEmacs風なキーバインドを設定する
初めに
普段Macでカーソル移動をする時は方向キーを使わず、<C-n>や<C-f>、<C-b>などのEmacs風のキーバインドを使っています。
ホームポジションを崩さずにカーソルを移動できるこのキーバインドはたいへん便利ですが、Linuxではデフォルトでこのようなキーバインドを使えないです。
そのため、普段Linuxを使っているとそこが少し不便さを感じていました。
本記事では自分の備忘録も兼ねて、上記の問題を解消できるautokeyというのを紹介していきます。 なお、筆者の環境は以下になります。
| OS | Ubuntu 20.04 TLS | 
| Desktop | Xorg | 
Autokeyとは
簡単に言うとキーバインドを設定できるソフトウェアになります。 ちゃんと調べていないですが、イメージとしてはX11を通してソフトウェアに送信されるキー情報を書き換えるという感じでしょうか。 これを使用することで、キーバインドを自由に設定できます。
Ubuntuでは、次のコマンドで導入できます。
$ sudo apt install autokey-gtk
なぜAutokeyなのか
Ubuntuユーザーであれば知っていると思いますが、Gnome Tweak Toolというアプリケーションがあります。
このアプリケーションではキーバインドをEmacs風に変更できます。しかし↓/↑を<C-n>/<C-p>で代用できない、といった適用しきれていない問題があります。

そこでAutokeyも併用することで先程の問題を解決できます。今のところ特に問題なく使えているので設定を気を付ければ競合は起きないと思います。
設定
設定は大きく分けて以下の3ステップあります。詳細を説明していきます。
- フォルダを作成する
 - フォルダとアプリケーションを紐付ける
 - キーバインドを設定する
 
autokeyはアプリケーションごとにキーバインドを設定できます 。筆者は1アプリケーションに1フォルダというふうにしていますが、特にルールはなくフォルダを自由に作成でき、名前も任意に付けられます。

フォルダとアプリケーションを紐付けるにはフォルダを選択した状態で右側にあるWindow FilterのSetボタンから、Detect Window Propertiesを選択して、対象のアプリケーションにウィンドウ切り替えをすれば良いです。

次にキーバインドの設定ですが、フォルダ内にスクリプトを追加していき、設定を書いていきます。
フォルダを選択した状態で新規ボタンからScriptを選択して、任意の名前を付けます。筆者の場合はキー名(たとえば削除ならdeleteなど)にしています。

次に入力したキーとそれに対応するキーの設定をしていきます。スクリプトを選択して画面右側のHotKeyを選択すると入力キーを設定できます。
次の画面でPress to Setを押してからキーを入力するとキャプチャしてくれます。

次に対応するキーはスクリプト入力部でkeyboard.send_keys("<ctrl>+f")と入力します。これでHotKeyにて設定したキーを押されたらスクリプトで設定したキーが送られます。

ちなみに筆者は次のように設定しています。
HotKey | SendKeys | 
|---|---|
<super>+f | <ctrl>+f | 
<ctrl>+h | <backspace> | 
<ctrl>+n | <down> | 
<ctrl>+p | <up> | 
<ctrl>+b | <left> | 
<ctrl>+f | <right> | 
参考文献
- https://github.com/autokey/autokey/wiki/API-Examples#send-keys
 - https://autokey.github.io
 - https://qiita.com/sassoon/items/ce6ae698fcfbd1fd8a42
 
最後に
ざっくりですがAutoKeyについて紹介しました。これでQOLがだいぶ上がったので、みなさんもぜひ試してみてください。
また、AutoKeyの設定のより詳細な情報は参考文献を見ていただければと思います。