問題
RLoginをSSHクライアントソフトウェアとして使用している。
vimでタブ移動をCtrl-PageUp、Ctrl-PageDownで行えない。あるいは、vimでCtrl-カーソルキーやCtrl-ファンクションキーを使用したい。
これに応じて、RLoginでキーコードを指定する方法について、いろいろと調べたので、備忘も兼ねて記載する。
以下には、次の内容を記載する。
- ターミナルに送られているキーコードを調べる方法について
- RLoginのオプション設定で、キーコードに修飾キー(Shift/Alt/Ctrl)を送信するための設定方法について
- Roginのオプション設定で、キーコードを編集するときの、Assign Stringの値の設定方法について
調査
参考URL
RLogin 3.15 キーコードのオプション設定
[micro] RLogin から利用する場合に、Shift + カーソルキーを有効にする
特殊なキーと修飾キーでキーバインド(for Terminal)
1. ターミナルに送られているキーコードを調べる方法について
ターミナルに送られているキーコードを、以下のコマンドで調べることができる。
$ 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 キーコードのオプション設定 に基づいて、設定する。
PageUp(PRIOR)やPageDown(NEXT)、カーソルキーに修飾キーの情報を付与するには、1.modifyCursorKeys のドロップダウンリストで、0(以上)を選んでみる。
F1~F12に修飾キーの情報を付与するには、2.modifyFunctionKeysのドロップダウンリストで、0(以上)を選んでみる。
$ sed -n l
でどんなコードが送られているか確認してみるとよい。
3. Roginのオプション設定で、キーコードを編集するときの、Assign Stringの値の設定方法について
RLogin 3.14 キーボードのオプション設定 に基づいて、設定する。
$ sed -n l
でざっくり調べてみた。
RLoginでは、キーと修飾キーの組み合わせに応じた Assign String は、以下のようになると思われる。
修飾キーについて、ShiftをS、AltをA、CtrlをCと略記している。
制御シーケンスについて無知なので、間違っているかも・・・。
修飾キー→ ↓キー |
なし | 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
を設定する、などが可能。