RLoginのキーコードの指定方法について

# 問題
RLoginをSSHクライアントソフトウェアとして使用している。
vimでタブ移動をCtrl-PageUp、Ctrl-PageDownで行えない。あるいは、vimでCtrl-カーソルキーやCtrl-ファンクションキーを使用したい。
これに応じて、RLoginでキーコードを指定する方法について、いろいろと調べたので、備忘も兼ねて記載する。

以下には、次の内容を記載する。
1. ターミナルに送られているキーコードを調べる方法について
2. RLoginのオプション設定で、キーコードに修飾キー（Shift/Alt/Ctrl）を送信するための設定方法について
3. Roginのオプション設定で、キーコードを編集するときの、Assign Stringの値の設定方法について

# 調査
## 参考URL
[RLogin 3.15 キーコードのオプション設定](http://nanno.dip.jp/softlib/man/rlogin/#MODKEY)
[[micro] RLogin から利用する場合に、Shift + カーソルキーを有効にする](https://raspi.ryo.sc/micro-rlogin-cursor/)
[特殊なキーと修飾キーでキーバインド(for Terminal)](https://qiita.com/sfuta/items/f01a3e024b0f80a80ce5)

## 1. ターミナルに送られているキーコードを調べる方法について
ターミナルに送られているキーコードを、以下のコマンドで調べることができる。

```console
$ sed -n l
a
a$
^A
\001$
```

上記コマンドは、sedコマンドに、オプション```-n```と```l```を指定している。
入力待ちになるので、```a```の後にEnterを入力すると（入力がエコーバックされたうえで）```a$```が出力される。続いて、```Ctrl-a```の後にEnterを入力すると（入力がエコーバックされたうえで）```\001$```が出力される。（```$```は行末を意味する）
なお、終了するには、```Ctrl-C```を入力する。
しかし、デフォルトの状態では、```Ctrl-PageUp```や```Ctrl-PageDown```を入力しても、何も出力されない。

RLogin側のオプション設定画面で、「キーボード」の「キーコード」ペインで確認してみると、Code:```PRIOR```, With:```Ctrl```に```$SEARCH_BACK```が、Code:```NEXT```, With:```Ctrl```に```$SEARCH_NEXT```が指定されている。
したがって、以下のいずれかの方法で、Code:```PRIOR```, With:```Ctrl```やCode:```NEXT```, With:```Ctrl```のエントリがなくなった状態にする。

- (1)これらの設定を削除する
- (2)あるいは、バックアップとして、Altにチェックを追加しておく。これにより、Code:```PRIOR```, With:```Ctrl+Alt```に```$SEARCH_BACK```が、Code:```NEXT```, With:```Ctrl+Alt```に```$SEARCH_NEXT```が設定された状態にする。

なお、この状態にしても、リモートサーバに```Ctrl-PageUp```や```Ctrl-PageDown```のキーコードが送信されない。

## 2. RLoginのオプション設定で、キーコードに修飾キー（Shift/Alt/Ctrl）を送信するための設定方法について
[RLogin 3.15 キーコードのオプション設定](http://nanno.dip.jp/softlib/man/rlogin/#MODKEY) に基づいて、設定する。
PageUp（PRIOR)やPageDown（NEXT）、カーソルキーに修飾キーの情報を付与するには、1.modifyCursorKeys のドロップダウンリストで、0（以上）を選んでみる。
F1~F12に修飾キーの情報を付与するには、2.modifyFunctionKeysのドロップダウンリストで、0（以上）を選んでみる。
```$ sed -n l```でどんなコードが送られているか確認してみるとよい。

## 3. Roginのオプション設定で、キーコードを編集するときの、Assign Stringの値の設定方法について
[RLogin 3.14 キーボードのオプション設定](http://nanno.dip.jp/softlib/man/rlogin/#KEYOPT) に基づいて、設定する。

```$ sed -n l```でざっくり調べてみた。
RLoginでは、キーと修飾キーの組み合わせに応じた Assign String は、以下のようになると思われる。
修飾キーについて、ShiftをS、AltをA、CtrlをCと略記している。
> 制御シーケンスについて無知なので、間違っているかも・・・。

|修飾キー→<br />↓キー|なし|S   |A   |S-A |C   |C-S |C-A |C-S-A|
|:-------|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:---:|
|F1            |\033OP  |\033O2P|\033O3P|\033O4P|\033O5P|\033O6P|\033O7P|\033O8P|
|F2            |\033OQ  |\033O2Q|\033O3Q|\033O4Q|\033O5Q|\033O6Q|\033O7Q|\033O8Q|
|F3            |\033OR  |\033O2R|\033O3R|\033O4R|\033O5R|\033O6R|\033O7R|\033O8R|
|F4            |\033OS  |\033O2S|\033O3S|\033O4S|\033O5S|\033O6S|\033O7S|\033O8S|
|F5            |\033[15~|\033[15;2~|\033[15;3~|\033[15;4~|\033[15;5~|\033[15;6~|\033[15;7~|\033[15;8~|
|F6            |\033[17~|\033[17;2~|\033[17;3~|\033[17;4~|\033[17;5~|\033[17;6~|\033[17;7~|\033[17;8~|
|F7            |\033[18~|\033[18;2~|\033[18;3~|\033[18;4~|\033[18;5~|\033[18;6~|\033[18;7~|\033[18;8~|
|F8            |\033[19~|\033[19;2~|\033[19;3~|\033[19;4~|\033[19;5~|\033[19;6~|\033[19;7~|\033[19;8~|
|F9            |\033[20~|\033[20;2~|\033[20;3~|\033[20;4~|\033[20;5~|\033[20;6~|\033[20;7~|\033[20;8~|
|F10           |\033[21~|\033[21;2~|\033[21;3~|\033[21;4~|\033[21;5~|\033[21;6~|\033[21;7~|\033[21;8~|
|F11           |\033[23~|\033[23;2~|\033[23;3~|\033[23;4~|\033[23;5~|\033[23;6~|\033[23;7~|\033[23;8~|
|F12           |\033[24~|\033[24;2~|\033[24;3~|\033[24;4~|\033[24;5~|\033[24;6~|\033[24;7~|\033[24;8~|
|PRIOR(PageUp) |\033[5~ |\033[5;2~|\033[5;3~|\033[5;4~|\033[5;5~|\033[5;6~|\033[5;7~|\033[5;8~|
|NEXT(PageDown)|\033[6~ |\033[6;2~|\033[6;3~|\033[6;4~|\033[6;5~|\033[6;6~|\033[6;7~|\033[6;8~|
|HOME          |\033[H  |\033[2H|\033[3H|\033[4H|\033[5H|\033[6H|\033[7H|\033[8H|
|END           |\033[F  |\033[2F|\033[3F|\033[4F|\033[5F|\033[6F|\033[7F|\033[8F|
|UP            |\033[A  |\033[2A|\033[3A|\033[4A|\033[5A|\033[6A|\033[7A|\033[8A|
|DOWN          |\033[B  |\033[2B|\033[3B|\033[4B|\033[5B|\033[6B|\033[7B|\033[8B|
|RIGHT         |\033[C  |\033[2C|\033[3C|\033[4C|\033[5C|\033[6C|\033[7C|\033[8C|
|LEFT          |\033[D  |\033[2D|\033[3D|\033[4D|\033[5D|\033[6D|\033[7D|\033[8D|

Assign String には、上記に示したようなもの以外にも、RLoginのメニュー項目に応じた動作を設定することもできる。例えば、```Ctrl-Insert```に```$PASTE```を設定する、などが可能。