現在SSH経由でリモートコンピュータでエンコードする必要があります。 Cygwinでこのプログラムを実行するmintty
と、tmux
接続が失われてもemacsは引き続き実行されます。tmux
報告書はすべて大丈夫だったが、鍵が壊れていると示されていTERM=screen
ました<end>
。 Emacsはこれを報告します<select>
。 tmux内のシェルで簡単な操作を実行すると、cat
キーがとして報告されます^[[4~
。ターゲットマシンはUbuntu 16.04.6 LTSです。 endキーは期待どおりに機能するため、zsh
emacsに関連しているようです。
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 VT220制御シーケンスは、これらすべての起源です(DEC VT420から追加された修飾子をエンコードする機能を含む)。
- find:DECFNK 1(例:CSI
1
~
またはCSI1
;
基準寸法~
) - insert:DECFNK 1(例:CSI
2
~
またはCSI2
;
基準寸法~
) - removeとも呼ばれるdelete:DECFNK 3(例えば、CSI
3
~
またはCSI3
;
基準寸法~
) または削除 - select:DECFNK 4(例:CSI
4
~
またはCSI4
;
基準寸法~
) - next screenとも呼ばれるPgDn:DECFNK 5(例:CSI
5
~
またはCSI5
;
基準寸法~
) - prev screenとも呼ばれるPgUp:DECFNK 6(例えば、CSI
6
~
または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 データベースには次のエントリが含まれています。putty
、mintty
、linux
他。 ///このタイプの端末から放出される値を使用してkend
適切な機能を定義します。khome
しかし、kfnd
kslt
間違った使用vt220
代わりにミントのようにTERM
オプションで環境変数に設定、minttyが送信する内容はアプリケーションで、およびとして理解されhomeます。endfindselect
あなたの場合、これが起こっている可能性があります。 1つの小さな問題は、理解を行うアプリケーションがtmuxであるということです。 tmuxは継承された設定selectに基づいて制御シーケンスを同様のものとして認識し、それを再エンコードして渡します。TERM
vt220
追加読書
- VT520/VT525 ビデオ端末プログラマ情報。 EK-VT520-RM。 1994年7月。数字。
keyboard
。 「ハードウェア関連」。 SCO Unixシステム管理者リファレンス。 1993年2月1日。サンタクルーズ作戦。 archive.org.- https://retrocomputing.stackexchange.com/a/9268/1932
- https://unix.stackexchange.com/a/479274/5132