ファンクションキー(F1-F12)、特にF11とF12のエスケープシーケンス

ファンクションキー(F1-F12)、特にF11とF12のエスケープシーケンス

ターミナルマルチプレクサを使用したいので、ファンクションキー( - )byobuを使用する必要があります。ただし、SSHを介してリモートシステムにアクセスするため、SSHを介してファンクションキーを送信する必要があります。 (私はUbuntu 10.04.4 LTSを実行しています。)F1F12

この回答到着この問題「ターミナルはキーではなく文字のみを理解する」と説明しているため、SSHを介してファンクションキーを送信するにはエスケープシーケンスを使用する必要があります。しかし、私の特定のプラットフォームで制御文字が何であるかよくわかりませんF1F12そのため、提案されたコマンドを使用しました。回答:

for x in {1..12}; do echo -n "F$x "; tput kf$x | cat -A; echo; done

私は次のような結果を得ます。

F1 ^[OP
F2 ^[OQ
F3 ^[OR
F4 ^[OS
F5 ^[Ot
F6 ^[Ou
F7 ^[Ov
F8 ^[Ol
F9 ^[Ow
F10 ^[Ox
F11 
F12 

これは、関連するエスケープシーケンスがないF11ことを示します。F12他のプログラムで盗まれたのでしょうか?それでは、どうやって戻ってきますか?

ベストアンサー1

tput端末でどのファンクションキーを宣伝するかをお知らせします。端末は通常、サポートしているすべてのファンクションキーとキーコードを公開しません。端末で実際にどのエスケープシーケンスが送信されているかを確認するには、次のCtrl+メソッドを使用してください。V同じ答えCtrl:+キーを再バインドしないターミナルアプリケーション(シェルなど)で、+キーを押します。 +文字通り次の文字(エスケープ文字になる)を挿入すると、通常の文字を含む残りのシーケンスが表示されます。VCtrlVCtrlV

Byobuが端末のエスケープシーケンスを正しく検出しない場合は、その定義をコピーして/usr/share/byobu/keybindings/f-keys.screen端末~/.byobu/.screenrcと一致するようにエスケープシーケンスを変更してください。たとえば、Ctrl+ V F12insert の場合は、^[[24~次を追加します。

bindkey "^[[24~" process x

おすすめ記事