ttyのhtopにファンクションキーを渡すにはどうすればよいですか?


9

私はhtoptty1で使用しようとしています。ただし、一部のファンクションキーは正常に機能しないようです。F1そしてF2何もしない、とF3(通常によってトリガーされるべきトリガーセットアップに思えますF2)。また、動作F4F5ません。また、Escこれらの画面から抜け出そうとすると、2回押す必要があります。

通常の端末(terminator)では、ファンクションキーは正常に機能します。しかし、私もEscここで2回押す必要があるので、それはおそらく赤いニシンです。

tty1でこれらのファンクションキーを使用するにはどうすればよいですか?

編集

TTY1では、私が押した場合はCtrl+ v、その後F1F5次の出力を得るなどI:

^[[[A
^[[[B
^[[[C
^[[[D
^[[[E

ではterminator

^[OP
^[OQ
^[OR
^[OS
^[[15~

この上のファンクションキーは(例えば等価です^[[17~F6)。

編集2

StéphaneChazelasのコメントに応じて。

  • $TERMtty1でも、「通常」の動作している端末と同じです。ですねxterm-256color
  • screenまたはtmuxを使用していません。
  • 私はhtop1.0.3 を使用していますが、最初の編集ではそれがの上流の問題であることを指摘しているようですhtop

infocmp -L1 | grep key_fそれらのキーがあなたに送るものと一致しますか?

「これらのキーが送信するものと一致する」という意味がわかりませんが、通常の端末とtty1の両方でこのコマンドを実行したところ、出力は次のように同じでした。

key_f1=\EOP,
key_f10=\E[21~,
key_f11=\E[23~,
key_f12=\E[24~,
key_f13=\E[1;2P,
key_f14=\E[1;2Q,
key_f15=\E[1;2R,
key_f16=\E[1;2S,
key_f17=\E[15;2~,
key_f18=\E[17;2~,
key_f19=\E[18;2~,
key_f2=\EOQ,
key_f20=\E[19;2~,
key_f21=\E[20;2~,
key_f22=\E[21;2~,
key_f23=\E[23;2~,
key_f24=\E[24;2~,
key_f25=\E[1;5P,
key_f26=\E[1;5Q,
key_f27=\E[1;5R,
key_f28=\E[1;5S,
key_f29=\E[15;5~,
key_f3=\EOR,
key_f30=\E[17;5~,
key_f31=\E[18;5~,
key_f32=\E[19;5~,
key_f33=\E[20;5~,
key_f34=\E[21;5~,
key_f35=\E[23;5~,
key_f36=\E[24;5~,
key_f37=\E[1;6P,
key_f38=\E[1;6Q,
key_f39=\E[1;6R,
key_f4=\EOS,
key_f40=\E[1;6S,
key_f41=\E[15;6~,
key_f42=\E[17;6~,
key_f43=\E[18;6~,
key_f44=\E[19;6~,
key_f45=\E[20;6~,
key_f46=\E[21;6~,
key_f47=\E[23;6~,
key_f48=\E[24;6~,
key_f49=\E[1;3P,
key_f5=\E[15~,
key_f50=\E[1;3Q,
key_f51=\E[1;3R,
key_f52=\E[1;3S,
key_f53=\E[15;3~,
key_f54=\E[17;3~,
key_f55=\E[18;3~,
key_f56=\E[19;3~,
key_f57=\E[20;3~,
key_f58=\E[21;3~,
key_f59=\E[23;3~,
key_f6=\E[17~,
key_f60=\E[24;3~,
key_f61=\E[1;4P,
key_f62=\E[1;4Q,
key_f63=\E[1;4R,
key_f7=\E[18~,
key_f8=\E[19~,
key_f9=\E[20~,

1
tty1のシェルプロンプトでCtrl+Vthenを押して、F1何が挿入されるかを確認します。この手順を繰り返しF2F3F4そしてF5、その後、ターミネータで同様のことを行います。あなたが見ているものを教えてください。
Gilles「SO-邪悪なことをやめなさい」

@ギレス質問は編集されました。
スパーホーク2015

$TERMそこの価値は何ですか?screenまたはtmuxを使用していますか?htopのバージョンは何ですか?ないinfocmp -L1 | grep key_fそれらのキーがあなたのために送った内容と一致しますか?
ステファンChazelas

@StéphaneChazelas質問を編集しました。
Sparhawk

2
TERM = linuxである必要があります。Linux仮想コンソールは、xtermとはほとんど関係がありません。gettyは$ TERMを設定します。上書きしないでください。
ステファンChazelas

回答:


4

設定することにより:

export TERM=xterm-256color

あなたのhtop端末(およびtermcapまたはterminfoデータベースを使用する他のすべてのビジュアル端末アプリケーション)は、端末が256色のxtermであり、Linux仮想コンソールではないことを伝えています。

htopterminfoデータベースにクエリを送信してF1、送信される文字シーケンスを認識しF2ますが、...の文字シーケンスを取得しxtermます。

xtermこれらのキーについて、Linux仮想コンソールとは異なるシーケンスを送信します。これらのキーはinfocmp、たとえば、次のように手動でterminfoデータベースを照会することで確認できます。

$ infocmp -L1 xterm-256color | grep 'key_f[1-5]='
        key_f1=\EOP,
        key_f2=\EOQ,
        key_f3=\EOR,
        key_f4=\EOS,
        key_f5=\E[15~,
$ infocmp -L1 linux | grep 'key_f[1-5]='
        key_f1=\E[[A,
        key_f2=\E[[B,
        key_f3=\E[[C,
        key_f4=\E[[D,
        key_f5=\E[[E,

したがって、としてhtop認識さ\E[[AれずF1、そのために期待\EOPされます。

ここで、あなたはに値を割り当てたくない$TERMの中で~/.bashrc$TERM端末エミュレーター(xtermterminator)自体、およびgettyLinux仮想コンソール(linux存在するはず)によって設定する必要があります。

特定のターミナルエミュレータがに選択する値に満足できない$TERM場合は、更新する必要があるターミナルエミュレータの構成です。


Macでは、ターミナルの設定を開き、「ansi」からに変更しxterm-256colorます。
Xeoncross

詳しい説明ありがとうございます。私の場合には、キティ(パテのフォーク)が設定された$TERMxterm-256colorが、使用するように設定されたESC[n~ファンクションキーを。機能キーをXTerm R6設定で使用するように変更し、そのすべてが現在機能しています。
アラン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.