SSH経由でファンクションキー(F1-F12)を送信する

SSH経由でファンクションキー(F1-F12)を送信する

SSH経由でアクセスできるFedoraシステムがあります。たまに使ってみたいプログラムの一つがファンクションキーを使います。問題は、Androidタブレット(ASUS Transformer Infinity)でSSHに物理キーボードを使用していますF1- キーがないことですF12。それで、私が使っていたターミナルアプリケーション(VX ConnectBot)がそれを機能として追加することを決めるまで、残りのキーボードを使って転送する方法を探していました。

Esc印刷可能なすべてのASCII文字、、、およびCtrlShift使用できます。EnterTab

ベストアンサー1

端末はキーではなく文字のみを認識できます。したがって、すべてのファンクションキーは、制御文字を使用して一連の文字にエンコードされます。関連制御文字(Tabis Ctrl+IEnteris Ctrl+MEscis)を持ついくつかの共通キーに加えて、ファンクションキーはまたはでCtrl+[始まるCtrl+[ [エスケープシーケンスも送信しますCtrl+[ O。あなたはそれを使用することができますtputアプリケーションが端末の各ファンクションキーに対して期待するエスケープシーケンスを確認するコマンド。このシーケンスは次の場所に保存されます。terminfoデータベース。たとえば、次のシェルフラグメントは、各ファンクションキーに対応するエスケープシーケンスを示しています。

$ 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 ^[[15~
F6 ^[[17~
F7 ^[[18~
F8 ^[[19~
F9 ^[[20~
F10 ^[[21~
F11 ^[[23~
F12 ^[[24~

ファンクションキーのエスケープシーケンスを確認するもう1つの方法は、Ctrl+キーを再バインドしないターミナルアプリケーション(シェルなど)で+を押すことです。 +文字通り次の文字(エスケープ文字になる)を挿入すると、通常の文字を含む残りのシーケンスが表示されます。VCtrlVCtrlV

シーケンスを入力するのは難しいので、アプリケーションでキーバインディングを変更したり、他の端末エミュレータを試してみてください。また、時間制限がある可能性があります。一部のアプリケーションは、Escキーにのみ意味を割り当てるのに十分速く入力された場合にのみエスケープ文字列を認識します。

おすすめ記事