追加読書

追加読書

現在SSH経由でリモートコンピュータでエンコードする必要があります。 Cygwinでこのプログラムを実行するminttyと、tmux接続が失われてもemacsは引き続き実行されます。tmux報告書はすべて大丈夫だったが、鍵が壊れていると示されていTERM=screenました<end>。 Emacsはこれを報告します<select>。 tmux内のシェルで簡単な操作を実行すると、catキーがとして報告されます^[[4~。ターゲットマシンはUbuntu 16.04.6 LTSです。 endキーは期待どおりに機能するため、zshemacsに関連しているようです。

Cygwinでローカルでemacsを実行すると、tmuxすべてがうまく動作します。だから私はそれがターゲットシステムに関連していると思います。<select>厄介に見えるので、再バインドしたくありません。これはEmacsのバグですか?バージョンはですGNU Emacs 26.3

C-aこの問題はandを使用して解決できますが、C-e正しい解決策を好みます。

答え1

部品の適用、部品の構成。端末の説明がVT220またはPC(何でも)をエミュレートするように設計されているかどうかに応じて、キーボードエディタはキーに異なる名前を割り当てることができます。また、呪いアプリケーションは最初の項目のみを表示できるため、重複項目は表示され(警告表示)、通常は削除されます。

Emacsはcursesアプリケーションではありませんが、ncursesが提供する端末記述を使用します。したがって、端末の説明にはend / selectのいずれかが表示されます。端末の説明を変更できます。

追加資料:キーボードが機能しないのはなぜですか?

(これについてのより長い説明はxtermにあります。用語情報文書)。

答え2

Emacs そうです。それはいキーの(元の)制御シーケンスselect。しかし、これはバイパスプロセスによって達成される可能性が高いです。

DEC VT102には編集キーボードはありません。これは、新しいモデルが登場すると発生します。これは、カーソルキーボードの上部中央の右側に編集キーボードがあるDEC VT320キーボードです。

DEC VT320キーボードです

キーボード編集用のDEC VT220制御シーケンスは、これらすべての起源です(DEC VT420から追加された修飾子をエンコードする機能を含む)。

  • find:DECFNK 1(例:CSI1 ~またはCSI1 ; 基準寸法 ~)
  • insert:DECFNK 1(例:CSI2 ~またはCSI2 ; 基準寸法 ~)
  • removeとも呼ばれるdelete:DECFNK 3(例えば、CSI3 ~またはCSI3 ; 基準寸法 ~) または削除
  • select:DECFNK 4(例:CSI4 ~またはCSI4 ; 基準寸法 ~)
  • next screenとも呼ばれるPgDn:DECFNK 5(例:CSI5 ~またはCSI5 ; 基準寸法 ~)
  • prev screenとも呼ばれるPgUp:DECFNK 6(例えば、CSI6 ~またはCSI6 ; 基準寸法 ~)

SCO XENIXマルチスクリーンコンソールは、IBM Model Mキーボードを搭載したシステムで実行され、以下を定義します。

  • home:CUP(つまり、CSIはH理論的にCSIに拡張できます)1 ; 基準寸法 H)
  • end:CPL(つまり、CSIはF理論的にCSIに拡張できます)1 ; 基準寸法 F)

DEC VT52x は、これらの追加の制御シーケンスを含む SCO コンソールの一部のコンテンツをコピーします。 2つの可能性があります準備する~のキーボードの修正DEC VT52xから:

  • VTレイアウト、DEC VT220/320/420と同じ:
    • find insert remove
    • select prev next
  • コンピュータレイアウト、IBMモデルMと同じ:
    • insert home PgUp
    • delete end PgDn

これらの機能は、端末自体のファームウェア設定制御に従って物理的に区別されるキー配列に移動される。しかし,関数から制御シーケンスへのマッピングは変わらない

問題は、samizdatと古い妻の話のために、人々がそれらを複数の端末にまとめるということです。エミュレータ。たとえば、Linuxカーネルに組み込まれているターミナルエミュレータは、2つの組み合わせです。 「PCレイアウト」を使用していますが(他の場所でSCOマルチスクリーンを模倣していても)、およびhome不正な制御シーケンスを送信してくださいend。シーケンスを送信して制御findしますselect

今エラーが含まれています。そしてそれはそこから広がった。

  • たとえば、minttyは通常homeSCOシーケンスを送信しますend。しかし、Linuxターミナルエミュレータと同じように動作する「VT220モード」があります。VT220の動作ではありません、特に「PC」レイアウトを使用します。VT220番号
  • homeendrxvtは、カーソルキーボードDECFNK 7とDECFNK 8への2つのDECFNK割り当てと重なる完全に無効なDECFNKコードを使用します。

これにより、軽度のしゃっくりが発生し続けます。

最も一般的な問題は、正しい端末タイプを使用しないことです。 terminfo データベースには次のエントリが含まれています。puttyminttylinux他。 ///このタイプの端末から放出される値を使用してkend適切な機能を定義します。khomeしかし、kfndkslt間違った使用vt220代わりにミントのようにTERMオプションで環境変数に設定、minttyが送信する内容はアプリケーションで、およびとして理解されhomeます。endfindselect

あなたの場合、これが起こっている可能性があります。 1つの小さな問題は、理解を行うアプリケーションがtmuxであるということです。 tmuxは継承された設定selectに基づいて制御シーケンスを同様のものとして認識し、それを再エンコードして渡します。TERMvt220

追加読書

関連情報