みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

minicomでCtrl+A

Linuxホストでマイコンボードと接続するときに、 シリアルコンソールが必要になる場合がある。

GtkTermやcuなどが思い浮かぶが、私はminicomを使うことが多い。

ただ、このminicom キーバインディングに少しだけ癖があり、Ctrl+Aがminicomのメニュー表示のためのショートカットとして割り当てられている。

minicomでCtrl+Aの問題点

ターゲット側にLinuxが乗っていてシェルがbashだったりする場合、カーソルを行の先頭に移動させるためのCtrl+Aと被ってしまう。 この場合はminicomのショートカットの方が優先されるので、キー操作によっては意図せずにローカルエコーがONになったり、なによりもカーソルが意図したところに移動しないのでイラッとする。

解決策

実はminicomのショートカットは割り当てが自由に変更できるようになっている。 これでCtrl+A以外の普段使わないようなところにショートカットを割り当てれば、先述のストレスから開放される。

次回以降のminicomの起動時に反映されるようにdflに設定を保存する手順を示す。

$ sudo minicom -s


+-----[設定]------+
| ファイル名とパス名     |
| ファイル転送プロトコル   |
| シリアルポート       |
| モデムとダイヤル      |
| 画面とキーボード      |
| "dfl" に設定を保存  |
| 新規に設定を保存      |
| 終了            |
| Minicom を終了   |
+---------------+

このメニューで「画面とキーボード」を選択する。

+----------------------[画面とキーボード]-----------------------+
| A - コマンドのためのキー   : ^A                                 |             | B - BS キーが送るコード    : BS                               |
| C - ステータスライン表示   : 許可                                 |           | D - 警告音                 : はい                          |
| E - 前景色 (メニュー)      : 白                               |
| F - 背景色 (メニュー)      : 黒                               |
| G - 前景色 (ターミナル)    : 白                                |
+-| H - 背景色 (ターミナル)    : 黒                                |
| | I - 前景色 (状態)          : 白                             |
| | J - 背景色 (状態)          : 黒                             |
| | K - ヒストリ領域サイズ     : 2000                              |
| | L - マクロファイル         : .macros                         |
| | M - マクロ編集                                             |
| | N - マクロを使うか         : はい                              |
| | O - 文字変換               :                              |
| | P - linefeedを追加         : いいえ                         |
| | Q -  ローカルエコー      : いいえ                               |           +-| R -  行末折り返し        : いいえ                              |
| S - 16進表示                : いいえ                        |
| T - Carriage Returnの追加  : いいえ                         |
|  どの設定を変更しますか (Esc で終了)                                          +-------------------------------------------------------+

ここでAキーを押す。

+----------------------[画面とキーボード]-----------------------+
| A - コマンドのためのキー   : ^A                                 |             | B - BS キーが送るコード    : BS                               |
| C - ステータスライン表示   : 許可                                 |           | D - 警告音                 : はい                          |
| E - 前景色 (メニュー)      : 白                               |
+-------------------------[コマンド起動キーの設定]-------------------------+    |                                                               |    |
| Press the new command key. If you want to use                 |    |
| the META or ALT key enter:                                    | |
|                                                               | |
|  o SPACE if your meta key sets the 8th bit high               |    |
|  o ESC   if your meta key sends the ESCAPE prefix (standard)  |  |
|                                                               ||
|                                                               |    |
| Press new command key:                                        |
|                                                               | |
+---------------------------------------------------------------+     |           +-| R -  行末折り返し        : いいえ                              |
| S - 16進表示                : いいえ                        |
| T - Carriage Returnの追加  : いいえ                         |
|  どの設定を変更しますか (Esc で終了)                                          +-------------------------------------------------------+

この状態で割り当てたいショートカットを入力する。 例えば「Ctrl+@」に割り当てたい場合は、Ctrlキーと@キーを同時押しする。

すると下記の画面に戻るので、Escキーを押す。

+----------------------[画面とキーボード]-----------------------+
| A - コマンドのため ^@                                           |             | B - BS キーが送るコード    : BS                               |
| C - ステータスライン表示   : 許可                                 |           | D - 警告音                 : はい                          |
| E - 前景色 (メニュー)      : 白                               |
| F - 背景色 (メニュー)      : 黒                               |               | G - 前景色 (ターミナル)    : 白                                |            +-| H - 背景色 (ターミナル)    : 黒                                |            | | I - 前景色 (状態)          : 白                             |               | | J - 背景色 (状態)          : 黒                             |               | | K - ヒストリ領域サイズ     : 2000                              |            | | L - マクロファイル         : .macros                         |              | | M - マクロ編集                                             |
| | N - マクロを使うか         : はい                              |            | | O - 文字変換               :                              |
| | P - linefeedを追加         : いいえ                         |               | | Q -  ローカルエコー      : いいえ                               |           +-| R -  行末折り返し        : いいえ                              |
| S - 16進表示                : いいえ                        |
| T - Carriage Returnの追加  : いいえ                         |
|  どの設定を変更しますか (Esc で終了)                                          +-------------------------------------------------------+

次に、以下のメニューに戻るので、「"dfl"に設定を保存」を選択する。

+-----[設定]------+
| ファイル名とパス名     |
| ファイル転送プロトコル   |
| シリアルポート       |
| モデムとダイヤル      |
| 画面とキーボード      |
| "dfl" に設定を保存  |
| 新規に設定を保存      |
| 終了            |
| Minicom を終了   |
+---------------+

これで一旦minicomを終了すると、次回以降、minicomのメニューは「Ctrl+@」で起動されるようになる。

引用中のminicomの画面が崩れているのは、実際にminicomを使用したことがある人ならその雰囲気を理解できると思う。