Ubuntu20.04 + US キーボードで日本語入力を非トグル操作

# 日本語変換モードキーの割当設定


「トグルキー操作なしで日本語入力を」
https://qiita.com/nanbuwks/items/d53911b0b8bfd8c6c548
は日本語キーボードでの設定でしたが、これを英語キーボードでもできるように考えてみます。


記事の設定では、「変換」「無変換」キーを IMEON/IMEOFF に割り当てています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/f83bfcbb-5256-adc2-0d0f-f50bbf9a3174.png)

このキーボードには日本語キーボードのように、変換のためのキーは用意されていませんが、ALT キーが右と左にあるので、これを「変換」「無変換」に、そしてALTの機能は悪の CapsLock キーに割り当てるようにしてみます。

なお、Ubuntu で US キーボードの設定を行う記事
「Ubuntu20.04 で US キーボードに変更」
https://qiita.com/nanbuwks/items/bcd6c838487c906a70e1
も併せてご覧ください。

# 環境

- Ubuntu 20.04 JTS Japanese
- Iiyama 15GSX8050-i7-YFB (Clevo P151SM) 
- Mosc 2.23.2815.102
- IBus 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/5788e6d6-935d-410f-d45e-310bfc830994.png)

巷の解説では、IBus ではなく fcitx を使って設定していることが多いようだ。しかしながらキッズPC環境への応用のために、日本語Limix版 Ubuntu20.04 になるべく近い環境にすることにした。

# 準備

まず、先の「トグルキー操作なしで日本語入力を」記事の通り設定を済ませておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/e330add8-3fdd-4be3-85fd-41be4a02fd2d.png)

HenkanやMuhenkanキーはありませんが、そのまま設定します。

本来であれば、ここで右Altや左Altが設定できればいいのですが、これらは「modifier key」というものらしく、ここでは設定できません。これらの設定のために、以下を行っていきます。

#  キーコードの割当の変更


次に、
「キーバインドの変更 Xmodmapの基本的な設定方法」
https://qiita.com/macinjoke/items/746c0c0adb74cfdeb9e7
を元に、以下のように設定しました。

## キーコードの調査

xev を使って関係しそうなキーのキーコードを調べておきます。

|||
|:---:|:---:|
|Caps Lock| 66|
|左 Ctrl |37|
|左 Shift| 50|
|左 Alt| 64|
|Windows| -|
|Fn | - |
|menu |135 |
|右 Ctrl| 105|
|右 Shift| - |
|右 Alt |108|

 ｰ とあるのはxev で取得できなかったものです。Fnはハードウェア処理でしょうから取れないのでしょう。Windowsキーはxevからフォーカスが外れて取得できませんでした。右Shiftは壊れているようです。


これを元に、以下のように設定するようにしてします。

Caps Lock キーを Alt キーとして設定
左 Alt キーを無変換キーとして設定
右 Altキーを変換キーとして設定

## デフォルト設定を保存する

設定を変更する前に、現在の設定を保存し簡単に戻せるようにしておきます。

先の

「キーバインドの変更 Xmodmapの基本的な設定方法」
https://qiita.com/macinjoke/items/746c0c0adb74cfdeb9e7

の通り以下のように作業します。

```

$ xmodmap -pke > ~/.Xmodmap_default

```

```

$ vim  ~/.Xmodmap_default

```
として、冒頭に以下を追加します。

```

clear shift
clear lock
clear control 
clear mod1
clear mod2 
clear mod3 
clear mod4 
clear mod5
```
また、末尾に以下を追加します。

```

add shift = Shift_L Shift_R
add lock = Caps_Lock
add control = Control_L Control_R
add mod1 = Alt_L Alt_R Meta_L 
add mod2 = Num_Lock 
add mod4 = Super_L Super_R Super_L Hyper_L 
add mod5 = ISO_Level3_Shift Mode_switch 
```

このファイルを使って、設定を復元するには以下のようにします。

```

$ xmodmap ~/.Xmodmap_default    
```


## キー設定変更ファイルを作る

以下のようにして定義ファイルを作る。

```

$ vim  ~/.Xmodmap
```

中身は以下の通り

```

clear lock
clear mod1

keycode 64 = Muhenkan
keycode 66 = Alt_L
keycode 108 = Henkan_Mode

add mod1 = Alt_L Meta_L
```

## 設定の変更を反映する

以下のようにすると、現在のセッションでの設定が有効になる。

```

$ xmodmap ~/.Xmodmap
```
 先の記事
「キーバインドの変更 Xmodmapの基本的な設定方法」
https://qiita.com/macinjoke/items/746c0c0adb74cfdeb9e7

では以下のように記述してますが、再起動時に元に戻ってしまいました。

> これで設定したキーバインドが有効になっているはずです。PCを再起動しても設定が反映されます。
> 元に戻すには下記を実行します。


いろいろ調べて、
「Ubuntu20.04でマシン起動時、サスペンド復帰時にスクリプトを実行する」
https://zenn.dev/jnuank/articles/8a616e539109cb
のように、

/usr/local/etc/rc.d

に記述したりしましたがうまくいきませんでした。

結局以下のようにGUIで設定しました。
「設定」-「アプリケーション」-「自動起動するアプリケーション」-「"ソフトウェア"で開く」-「起動」-「自動起動するアプリケーションの設定」で「追加」


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/7e2ba48e-910e-7c10-9cad-ae218953d9ec.png)

以下のように設定しました。 nanbuwks  は自分の名前です。これが xmodmap  ~/.Xmodmap  だとうまく動きませんでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/be002f07-2a49-0d24-93bd-83eea3d982a0.png)

# 問題点

先の
「Ubuntu20.04でマシン起動時、サスペンド復帰時にスクリプトを実行する」
https://zenn.dev/jnuank/articles/8a616e539109cb

ではサスペンド復帰時に元に戻るそうですが、このPCはサスペンドがそもそもうまく動いていないのでチェックができていません。

また、Ctrl+Alt+F3 などでコンソールを使った後、Ctrl+Alt+F2で元に戻っても変更が元に戻ってしまいます。これについては今の所以下をタイプインすることで対処するようにしています。

```

$ xmodmap ~/.Xmodmap
```