SSH経由でアクセスできるFedoraシステムがあります。たまに使ってみたいプログラムの一つがファンクションキーを使います。問題は、Androidタブレット(ASUS Transformer Infinity)でSSHに物理キーボードを使用していますF1- キーがないことですF12。それで、私が使っていたターミナルアプリケーション(VX ConnectBot)がそれを機能として追加することを決めるまで、残りのキーボードを使って転送する方法を探していました。
Esc印刷可能なすべてのASCII文字、、、およびCtrlをShift使用できます。EnterTab
答え1
端末はキーではなく文字のみを認識できます。したがって、すべてのファンクションキーは、制御文字を使用して一連の文字にエンコードされます。関連制御文字(Tabis Ctrl+I
、Enteris Ctrl+M
、Escis)を持ついくつかの共通キーに加えて、ファンクションキーはまたはで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
シミュレートしたりできますF1
。F10
0
F10
これらのショートカットは、携帯電話や物理的なFキーを持たない他の限られたデバイスで端末エミュレータを使用するときに便利です。端末プログラムまたは同じセッションで実行されている他のプログラム(byobu / screen / tmuxなど)は、独自の目的でFキーを傍受したときに物理キーボードにも役立ちます。
例:Midnight Commanderで終了
Esc
をタップしたいのですが、Gnome Terminalはそれを傍受してメニューキーとして解釈します。代わりにを押してからを押します。 Gnome Terminalは入力を個別に渡して解釈した後に終了します。F10
mc
F10
Esc
0
mc
F10
mc
例:フィルタリングし
Alt
たいが傍受して「次のウィンドウ」と解釈します。代わりにを押し続けます。 Byobuはキーの組み合わせを渡して解釈し、フィルタリングを有効にします。F4
htop
byobu
F4
Alt
4
htop
F4
アプリケーションがこの方法を別のキーの組み合わせとして解釈する場合、このAlt
方法は機能しない可能性があります。実際、この問題は発生しませんでした。Alt+Number
F-Number
F11
このように入力する方法があるのか、それとも入力する方法があるのかわかりませんF12
。なぜなら、私はこれを行う必要がなかったからです。