tmuxでF1-F4キーを正常に動作させる方法

tmuxでF1-F4キーを正常に動作させる方法

通常の端末ではF1-F4キーが生成され^[[11~^[[12~^[[13~^[[14~ますが、tmuxでは^[OP^[OQ^[OR^[OS。私は彼らがtmuxで同じように動作したいので、tmuxのプログラムバインディングについて心配する必要はありません。 PuTTYはありません。エクスタムR6オプションが開きます。

他のキーの不一致を避けるために、tmuxはputtyとターミナルタイプを使用していますが、putty-256colorまだ矢印キーを再マップする必要があります。

構成はい以前は:

set -g default-terminal "putty-256color"
set -g terminal-overrides "putty*:smkx@:rmkx@:kLFT5=\eOD:kRIT5=\eOC:kUP5=\eOA:kDN5=\eOB:kf1=\e[11~:kf2=\e[12~:kf3=\e[13~:kf4=\e[14~"

私の構成の残りの部分は無関係の化粧品です。 4つのファンクションキーを元の状態に再マップしようとしましたが、まだ成功していないことがわかります。

私のキーが同じままでない理由の基本的な内容がありません。すべてtmux 内部および外部キー(除外)プレフィックスそれでは、このような問題は発生しませんか?

編集する
私の問題はまだ存在しますが、私は以前は基本的な内容がありません:default-terminal端末タイプを参照以内にtmuxは、terminal-overrides私がリンクしている用語の種類を表します。外部tmux。 (はい、私はばかになったと思います。)

今私の設定は次のとおりです。

set -g default-terminal "screen-256color"
set -g terminal-overrides "putty*:kLFT5=\eOD:kRIT5=\eOC:kUP5=\eOA:kDN5=\eOB:kf1=\e[11~:kf2=\e[12~:kf3=\e[13~:kf4=\e[14~:smkx@:rmkx@"

F1- それでも外部と内部のtmuxをF4提供します。^[[11~^[[12~^[[13~^[[14~^[OP^[OQ^[OR^[OS

答え1

マニュアルページは不明ですが、ソースコードを読むことが役に立ちます。

    /*
     *このファイルの名前は少し誤解を招く可能性があります。含まれるコードは次のとおりです。
     *キーコードは、次に転送するのに適したコンテンツに翻訳されます。
     *アプリケーションはウィンドウで実行されます(input.cが他のウィンドウで実行するのと似ています)。
     *方向と出力)。
     */

あなたのシェルはコメントで参照されるアプリケーションです。

端末の説明と一致しない構成(外部の「実際の」端末)を使用できるように、端末の説明の読み取りを変更するためにterminal-overrides使用されます。tmux

tmuxキーを一意のエスケープシーケンスセットに変換します(のエスケープシーケンスと一致しますが、screenオプションが追加されますxterm-keys)。これトップにコメントwindow.c次のように要約されます。

 * A pane has two buffers attached, these are filled and emptied by the main
 * server poll loop. Output data is received from pty's in screen format,
 * translated and returned as a series of escape sequences and strings via
 * input_parse (in input.c). Input data is received as key codes and written
 * directly via input_key.

これマニュアルページ説明する

default-terminal 端末
このセッションで作成された新しいウィンドウのデフォルト端末設定 - デフォルトTERM環境変数tmuxこれが正しく機能するために〜しなければならないに設定「画面」「ティーモックス」またはその派生商品。

制限の理由は、input-keys.c目的の方法でデータをカスタマイズできないためです。

答え2

ファンクションキーのキーコードは、端末で定義したキーコードと一致する必要があります。

私の言うことは、F1ファンクションキーが^ [[11〜を生成する場合、端末定義にkf1 = \ E [11〜]がなければならないということです(例:TERM = dtterm)。

F1ファンクションキーが^ [OPを生成する場合、端末定義にはkf1 = \ EOP(TERM = vt220など)が必要です。

次のコマンドを使用して端末のキー割り当てを確認できます。情報CMP注文する。

関連情報