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キーにのみ意味を割り当てるのに十分速く入力された場合にのみエスケープ文字列を認識します。

答え2

Jack Palevichが開発したAndroid端末エミュレータは、ボリュームキーの組み合わせを使用して、ファンクションキーを含むさまざまなキーストロークを送信します。実際のキーボードにあるすべてのキーを備えたハッカーキーボードもあります。

答え3

Drake Clarrisが提案したように、Androidでは代替キーボードをインストールできます。ハッカーのキーボードFキーが含まれています。

Escただし、何らかの理由で新しいキーボードをインストールできない場合は、ターミナルアプリケーションでおよび/またはキーを押すことができる限り、他のオプションがありますAlt

Esc通常、ヒールを使用しNumberたり - をAlt+NumberシミュレートしたりできますF1F100F10

これらのショートカットは、携帯電話や物理的なFキーを持たない他の限られたデバイスで端末エミュレータを使用するときに便利です。端末プログラムまたは同じセッションで実行されている他のプログラム(byobu / screen / tmuxなど)は、独自の目的でFキーを傍受したときに物理キーボードにも役立ちます。

  • 例:Midnight Commanderで終了Escをタップしたいのですが、Gnome Terminalはそれを傍受してメニューキーとして解釈します。代わりにを押してからを押します。 Gnome Terminalは入力を個別に渡して解釈した後に終了します。F10mcF10Esc0mcF10mc

  • 例:フィルタリングしAltたいが傍受して「次のウィンドウ」と解釈します。代わりにを押し続けます。 Byobuはキーの組み合わせを渡して解釈し、フィルタリングを有効にします。F4htopbyobuF4Alt4htopF4

アプリケーションがこの方法を別のキーの組み合わせとして解釈する場合、このAlt方法は機能しない可能性があります。実際、この問題は発生しませんでした。Alt+NumberF-Number

F11このように入力する方法があるのか​​、それとも入力する方法があるのか​​わかりませんF12。なぜなら、私はこれを行う必要がなかったからです。

関連情報