Ubuntu24.04でAutoKeyを使い矢印キーを変換＋f,g,h,jキーにマッピングする

# はじめに

こんにちは、もちもちMAXです。
私は普段、AutoHotKeyを使って矢印キーを「変換キー」＋「f,g,h,j」で代替できるようにしています。矢印キーを入力する時に、手をホームポジションから動かしたくないんですよね。で、この前Ubuntuを導入する機会がありセットアップをしていたのですが、どうもWindowsのようにAutoHotKeyを入れることができないようで、かなり困りました。
そこで、AutoKeyを使って矢印キーのマッピングを実現したので、本記事に書き残しておきます。

# やりたいこと

下記の通り、矢印キーをマッピングする
- ←　＝　「変換」＋「f」
- ↑　＝　「変換」＋「g」
- ↓　＝　「変換」＋「h」
- →　＝　「変換」＋「j」

今回は上記をAutoKeyで実現します。

# 手順

ざっくりとした手順は下記の通りとなります。
1. ディスプレイサーバをX.OrgからX11に変更する
1. キーボードの入力を日本語にする
1. 「変換」キーを仮想キーの「Hyper」にマッピングする
1. AutoKeyでマッピングの設定をおこなう

次にそれぞれの手順の詳細を説明します。

# ディスプレイサーバをX.OrgからX11に変更する

Ubuntu 22.04からディスプレイサーバがX.Org（X11）からWaylandに変わりました。正直ディスプレイシステムというのが何かはあまり分かってないのですが、AutoKeyはWaylandでは正しく動かないようです。これに気付かなかったために苦しむことになりました。
まずは、下記のコマンドでディスプレイサーバがどうなっているかを確認します。
```
echo $XDG_SESSION_TYPE
```
この表示がX11であれば、問題ありませんがWaylandとなっている場合はX11に変えましょう。

ディスプレイサーバをX11に変える場合、ubuntuを再起動してログイン時の画面右下にある歯車アイコンを選択しUbuntu on Xorgを選べばOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463753/4bf07e45-8ca4-5f1a-8e8f-0268d30e0562.png)

# キーボードの入力を日本語にする

ディスプレイサーバを変えた影響なのか、キーボード入力がUSになっていたり色々とおかしくなっていました。もし、特に異常ない場合は本項目はスキップして良いと思います。

私の場合は、設定->キーボード->入力ソースを日本語（Mozc）としたら日本語に戻りました。

![Screenshot from 2024-10-31 15-44-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463753/a6c58aee-d296-1ef1-8bf8-e89efbffe8d0.png)

あとは、設定->地域と言語も日本語にしておきます。（一応）

![Screenshot from 2024-10-31 15-44-49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463753/06eb980e-76ca-d681-3389-ec8292e1ac0c.png)

# 「変換」キーを仮想キーの「Hyper」にマッピングする

次に、「変換」キーを仮想キーの「Hyper」にマッピングしますが、まず先にこの手順が必要な理由を説明します。一度、AutoKeyの画面を見てみましょう。
![Screenshot from 2024-10-31 15-50-34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463753/b27846a8-ee18-fda0-9b9b-8ec500ad90db.png)
これは、最終目的である「変換」キー＋「f,g,h,j」キーを矢印キーにマッピングする際の画面ですが、画面中央に「Control」「Alt」「Shift」「Super」「Hyper」「Meta」キーが並んでおり、その下にはPress to Setボタンで任意のキーが選べるようになっています。AutoKeyでは、任意のキーと上述の6つのキーの組み合わせが選べるようになっています。この6つには「変換」キーは入っていません。そのため、「変換」キーを6つのキーのいずれかにマッピングしておかないと「変換」＋「f,g,h,j」という組み合わせが選べないのです。6つのいずれかであればよいので、「変換」キーのマッピングは「Hyper」でなくても「Super」や「Meta」などでも問題ありません。

それでは改めて「変換」キーを「Hyper」キーにマッピングしましょう。
![Screenshot from 2024-10-31 15-47-28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463753/de30548c-5baa-0d40-e2e4-db1f8cb7975e.png)
`/usr/share/X11/xkb/symbols`の中の`inet`か`pc`辺りのファイルに`key <HENK> {[ Henkan  ]}`という行があるはずなので、その行を`key <HENK> {[ Hyper_L ]}`に書き換えましょう。（画像の80行目）
そして次のコマンドを実行しましょう。
```
sudo setxkbmap -layout jp
```
以上で、「変換」キー「Hyper」へのマッピングは終了です。

# AutoKeyでマッピングの設定をおこなう

とりあえずAutoKeyのインストール
```
sudo apt install autokey-gtk
```

AutoKeyを起動したら画面左上の`新規`ボタンからScriptを選び、任意の名前を入力します。
![Screenshot from 2024-10-31 15-50-09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463753/e142c12b-4cb6-8edf-82d6-33c1742495b0.png)

次に画面右下にある`Set Hotkey`を選び、`Hyper`とPress to Setで任意のキーを入力します。
![Screenshot from 2024-10-31 15-50-34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463753/bacbd107-1dce-7787-3b1c-d8189206823d.png)

最後に、scriptを記述します。`keyboard.send_keys("<right>")`
![Screenshot from 2024-10-31 15-51-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463753/2b70be5f-b91f-699d-09ea-36271e1d0244.png)

あとは、矢印キーの数（4つ）だけ同じようにscriptを作成すれば終了です。

# さいごに

今回はUbuntu24.04で矢印キーをマッピングする方法について説明しました。普通にAutoHotKeyを使えば良いと思っていたので、なかなか上手くいかず苦労しました。本記事で同じように悩んでいる人の助けになれば幸いです。

ブログ↓
https://mochinochikimchi.com

自作アプリLP↓
https://mochinochikimchi.com/applications/mealmotion/index.html