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転送^H
とDelete転送の状況をシミュレートします^?
。
3行目は、アプリケーションに$TERMCAP
環境変数を介してtermcapを使用するように指示しますが、それを使用しているユーザーはterminfo
通知を受け取らないことに注意してください。
答え2
予想される文字は、従来の端末(VT220など)でDELとしてマークされたキーである^?です。
stty intrはできますか?アプリケーションを起動する前に割り込み信号として使用してください。しかし、PuttyをDELに送信するように設定する方法があるかどうかはわかりません。他の端末では再マッピングできることがわかります。
印刷されるメッセージを変更できませんか?
他の端末エミュレータが必要な場合もあり、端末とアプリケーション間の画面などの追加の端末エミュレーション層が必要な場合もあります。
編集:「ファンクションキーとキーボード」で「SCO」オプションを選択すると、DELキーを生成する必要があり、^?
それをstty intrにマップできます。また、バックスペースをControl-Hに設定する必要があります。アプリケーションはSCOオペレーティングシステムで実行するように設計されたアプリケーションであるため、このモードではHome、Endなどのキーの文字シーケンスを生成すると予想することができます。
ただし、screenを使用すると、より制御された環境が作成されるため、@StephaneChazelasの答えを考慮する必要があります(つまり、誰もがクライアントシステムにパテを設定する必要はありません)。