Xterm终端和调整代码大小

时间:2011-01-17 02:39:17

标签: cobol xterm

我正在转换一个非常古老的25岁以上的应用程序。

它发送转义序列以使SCREEN 132个字符宽...
然而,它没有工作,我把XTERM equilivment似乎在大多数情况下工作..

"\x1B[8;50;132t"

虽然屏幕调整成功但是存在问题 以下是COBOL程序用于执行命令的代码

   pg -f FILETOSHOW

使用CALL "SYSTEM" USING BY CONTENT DS-REC
其中DS-REC是上述命令......

问题在于,虽然屏幕调整大小数据是使用之前的设置打印的...再次调用程序可以解决问题并正确打印...
没有人知道我是否也应该发送另一个转义码?

2 个答案:

答案 0 :(得分:2)

转义序列记录在XTerm控制序列的“Functions using CSI , ordered by the final character(s)”部分的此行下:

CSI Ps ; Ps ; Ps t

它是改编自dtterm的控件之一,特别是

  

Ps = 8 ; 身高 ; 宽度

     

将文本区域的大小调整为给定    height width 以字符为单位。省略的参数重用了   当前的高度或宽度。零参数使用显示器   高度或宽度。

它于1996年在xterm中实现(patch #18)。

由于某些用户将此类操作视为安全问题(包括调整字体大小),因此在2003年添加了资源windowOpspatch #174),以允许打包者更改默认值行为。该资源可以在运行时使用菜单条目进行修改,也可以直接在用户的X资源中进行设置。

简而言之,该功能存在于xterm中,但可能需要(简单)配置更改才能使用它。

调整xterm窗口大小的控制序列是窗口管理器的请求。窗口管理器可能不遵守该请求,例如,对于平铺窗口管理器,它总是会失败。此外,由于xterm不会动态更改字体大小,因此如果字体大小太大而无法在屏幕上显示132列,则可能会失败。 fixed字体可能适用于现代大型显示器(我的1280x1024显示器可以显示60x210但有些松弛),但大字体可能不会。

当它无法按照请求调整大小时,它是处理请求的窗口管理器:xterm在请求完成时已经忘记了,并且将接受窗口管理器所做的任何操作。

答案 1 :(得分:-1)

不要依赖这些转义码。 xterm不会将自身设置为大于屏幕的大小。因此,如果用户拥有足够大的字体和/或足够小的屏幕,他将不会自动获得他的132x50终端,更不用说自动调整大小了。 (例如,lucid控制台在15点1024x600减去一个任务栏,WM装置为我提供了85x28细胞的空间。)

如果您的程序需要如此笨拙的vt大小132x50,请将用户的请求作为先决条件。或者只是让程序实际运行在任何可变大小上。