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


13

SSHを使用できるFedoraマシンがあります。使用したいプログラムの1つは、ファンクションキーを時々使用します。問題は、私は物理的なキーボード付きAndroidタブレット(ASUSトランス無限大)からSSH'ing、ないんだということであるF1- F12キー。したがって、使用しているターミナルアプリ(VX ConnectBot)が機能として追加することを決定するまで、キーボードの残りの部分を使用して送信する方法を探しています。

私は、すべての印刷可能なASCII文字を使用することができEscCtrlShiftEnter、とTab


Android.SEで質問する方が良いと思います。
デロバート

回答:


25

端末はキーではなく文字のみを認識します。したがって、すべてのファンクションキーは、制御文字を使用して文字のシーケンスとしてエンコードされます。制御文字(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~

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

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


コマンドが提供するリストにシフトファンクションキーを追加するにはどうすればよいですか?
drevicko

1
@drevicko xtermでは、Shift + F1はkf13、Shift + F2はkf14などです。その後、Ctrl + F1はkf25、Ctrl + Shift + F1はkf37、Alt + F1はkf49です。これが他の端末で機能するかどうか、実際のF13キーがある場合に何が得られるかはわかりません。
ジル「SO-悪であるのをやめる」

3

Jack PalevichのAndroidターミナルエミュレーターは、キーとボリュームキーの組み合わせを使用して、ファンクションキーを含むさまざまなキーを送信します。また、実際のキーボードにあるすべてのキーを使用できるHacker's Keyboardもあります。


おかげで、ハッカーキーボードは今必要なものをカバーするはずです。
-Sizik
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.