intrをdelキーにマッピングする

intrをdelキーにマッピングする

SCO OpenServer 5.0.7からCentOS(Red Hat)Linux 5.9にレガシー4GLアプリケーションを移行しようとしています。

ユーザーは「DEL to ABORT」を押すように求められますが、実際には割り込み信号をキャプチャする画面がたくさんあります。

stty intr一貫性のためにキーにマッピングする方法はDEL?割り込みをansiシーケンスにマッピングすることは可能ですか?

PuTTY は各キーに対して次の制御コードを生成します。

DEL:^[[3~

BACKSPACE:^?

SHIFT BACKSPACE:^H

DELPuTTYでキーを具体的に再マップするオプションが見つかりません。

答え1

文字はintr一連の文字ではなく単一文字でなければなりません。

Random832が提案したように使用するのはscreenおそらく最良の選択でしょう。その後、すべての端末で実行できます。

screen別の端末内で端末をエミュレートします。デフォルトでは、エミュレートする端末はPuTTYのように転送を続けます^?が、これを変更できます。Backspace^[[3~Delete

たとえば、次のファイルを作成する場合:

bindkey -k kb stuff "\10"
bindkey -k kD stuff "\177"
termcap * '' 'kD=\177:kb=\10'
screen sh -c 'stty intr "^?" erase "^H"; exec my-legacy-app'

そしてそれを次のように使用してくださいscreen -c /path/to/that-file

それはBackspace転送^HDelete転送の状況をシミュレートします^?

3行目は、アプリケーションに$TERMCAP環境変数を介してtermcapを使用するように指示しますが、それを使用しているユーザーはterminfo通知を受け取らないことに注意してください。

答え2

予想される文字は、従来の端末(VT220など)でDELとしてマークされたキーである^?です。

stty intrはできますか?アプリケーションを起動する前に割り込み信号として使用してください。しかし、PuttyをDELに送信するように設定する方法があるかどうかはわかりません。他の端末では再マッピングできることがわかります。

印刷されるメッセージを変更できませんか?

他の端末エミュレータが必要な場合もあり、端末とアプリケーション間の画面などの追加の端末エミュレーション層が必要な場合もあります。

編集:「ファンクションキーとキーボード」で「SCO」オプションを選択すると、DELキーを生成する必要があり、^?それをstty intrにマップできます。また、バックスペースをControl-Hに設定する必要があります。アプリケーションはSCOオペレーティングシステムで実行するように設計されたアプリケーションであるため、このモードではHome、Endなどのキーの文字シーケンスを生成すると予想することができます。

ただし、screenを使用すると、より制御された環境が作成されるため、@StephaneChazelasの答えを考慮する必要があります(つまり、誰もがクライアントシステムにパテを設定する必要はありません)。

関連情報