0

25 年以上前の非常に古いアプリケーションの変換を進めています。

SCREEN 132文字の幅を広げるためにエスケープシーケンスを送信します...
しかし、それは機能しませんでした。ほとんどの場合に機能するように見えるXTERM平衡を配置しました.

それは

"\x1B[8;50;132t"

画面のサイズは正常に変更されますが、問題があります。COBOL プログラムがコマンドを実行するために使用するコードは次のとおりです。

   pg -f FILETOSHOW

CALL "SYSTEM" USING BY CONTENT DS-REC
DS-REC が上記のコマンドである場所 を使用して....

問題は、画面のサイズを変更してもデータが以前の設定で印刷されることです...プログラムを再度呼び出すと、問題が解決し、正しく印刷されます...
別のエスケープコードも送信する必要があるかどうかは誰にもわかりませんか?

4

2 に答える 2

3

エスケープ シーケンスは、XTerm Control Sequences の「Functions using CSI 、ordered by the final character(s)」セクションの次の行に記載されています。

CSI Ps ; Ps ; Ps t

これはdttermから適用されたコントロールの 1 つであり、特に

Ps =8 ; 高さ ;

テキスト領域を指定 された高さの文字にサイズ変更します。省略されたパラメーターは、現在の高さまたは幅を再利用します。ゼロ パラメータは、ディスプレイの高さまたは幅を使用します。

1996 年に xterm に実装されました (パッチ #18 )。

一部のユーザーは、この種の操作をセキュリティ上の問題 (フォントのサイズ変更を含む) と見なしているためwindowOps、2003 年にリソースが追加され (パッチ #174 )、パッケージャーがデフォルトの動作を変更できるようになりました。このリソースは、実行時にメニュー エントリを使用して変更したり、ユーザーの X リソースに直接設定したりできます。

つまり、この機能は xterm に存在しますが、使用するには (簡単な) 構成変更が必要になる場合があります。

xterm ウィンドウのサイズを変更するための制御シーケンスは、ウィンドウ マネージャーへの要求です。ウィンドウ マネージャは要求を受け入れない場合があります。たとえば、タイル ウィンドウ マネージャの場合は常に失敗します。また、xterm はフォント サイズを動的に変更しないため、フォント サイズが大きすぎて画面に 132 列を表示できない場合、失敗する可能性があります。このfixedフォントはおそらく最新の大型ディスプレイでは機能しますが (私の 1280x1024 モニターは 60x210 を少したるませて表示できます)、大きなフォントは機能しない可能性があります。

要求された大きさにサイズ変更できなかった場合、要求を処理するのはウィンドウ マネージャです。xterm は要求が完了するまでに忘れており、ウィンドウ マネージャが行うことは何でも受け入れます。

于 2015-04-23T00:20:14.527 に答える
-1

これらのエスケープ コードに依存しないでください。xterm は自分自身を画面より大きいサイズに設定しません。したがって、ユーザーのフォントが十分に大きいか、または画面が十分に小さい場合、132x50 端末が自動的に取得されることはありません。(たとえば、1024x600 で 15pt の lucida コンソールからタスクバーを差し引いたものと WM deco は、85x28 セル用のスペースを与えてくれます。)

プログラムで 132x50 という厄介な vt サイズが必要な場合は、前提条件としてユーザーに要求してください。または、プログラムを実際に任意の可変サイズで実行するだけです。

于 2011-01-17T04:12:13.687 に答える