web-dev-qa-db-ja.com

SSHを介したファンクションキー(F1〜F12)の送信

SSH接続できるFedoraマシンを持っています。たまに使用したいプログラムの1つがファンクションキーを使用しています。問題は、物理キーボードを使用してAndroidタブレット(ASUS Transformer Infinity))からSSH接続していることですが、 F1-F12 キー。したがって、私が使用しているターミナルアプリ(VX ConnectBot)がそれらを機能として追加することを決定するまで、残りのキーボードを使用してそれらを送信する方法を探しています。

すべての印刷可能なASCII文字、 Esc、 Ctrl、 Shift、 Enter、および Tab

15
Sizik

端末はキーではなく文字のみを認識します。したがって、すべてのファンクションキーは、制御文字を使用して文字のシーケンスとしてエンコードされます。関連する制御文字を持ついくつかの一般的なもの(TabCtrl+I、 EnterCtrl+M、 Esc is 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~

ファンクションキーのエスケープシーケンスを確認する別の方法は、 Ctrl+V 再バインドしない端末アプリケーションで Ctrl+V キー(シェルなど)。 Ctrl+V 次の文字(エスケープ文字になります)を文字どおりに挿入すると、通常の文字で構成されるシーケンスの残りの部分を見ることができます。

シーケンスを入力するのは面倒なので、アプリケーションのキーバインディングを変更するか、別のターミナルエミュレータを使用して調査してください。また、時間制限がある可能性があることに注意してください。一部のアプリケーションは、エスケープシーケンスが十分に速くなった場合にのみそれを認識するため、 Esc キーだけ。

Jack PalevichによるAndroidターミナルエミュレータは、音量キーとのキーの組み合わせを使用して、ファンクションキーを含むさまざまなキーを送信します。実際のキーボードが持っているすべてのキーを利用できるハッカーのキーボードもあります。

3
Drake Clarris