我正在转换一个非常古老的25岁以上的应用程序。
它发送转义序列以使SCREEN 132个字符宽...
然而,它没有工作,我把XTERM equilivment似乎在大多数情况下工作..
是
"\x1B[8;50;132t"
虽然屏幕调整成功但是存在问题 以下是COBOL程序用于执行命令的代码
pg -f FILETOSHOW
使用CALL "SYSTEM" USING BY CONTENT DS-REC
其中DS-REC是上述命令......
问题在于,虽然屏幕调整大小数据是使用之前的设置打印的...再次调用程序可以解决问题并正确打印...
没有人知道我是否也应该发送另一个转义码?
答案 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年添加了资源windowOps
(patch #174),以允许打包者更改默认值行为。该资源可以在运行时使用菜单条目进行修改,也可以直接在用户的X资源中进行设置。
简而言之,该功能存在于xterm中,但可能需要(简单)配置更改才能使用它。
调整xterm窗口大小的控制序列是窗口管理器的请求。窗口管理器可能不遵守该请求,例如,对于平铺窗口管理器,它总是会失败。此外,由于xterm不会动态更改字体大小,因此如果字体大小太大而无法在屏幕上显示132列,则可能会失败。 fixed
字体可能适用于现代大型显示器(我的1280x1024显示器可以显示60x210但有些松弛),但大字体可能不会。
当它无法按照请求调整大小时,它是处理请求的窗口管理器:xterm在请求完成时已经忘记了,并且将接受窗口管理器所做的任何操作。
答案 1 :(得分:-1)
不要依赖这些转义码。 xterm不会将自身设置为大于屏幕的大小。因此,如果用户拥有足够大的字体和/或足够小的屏幕,他将不会自动获得他的132x50终端,更不用说自动调整大小了。 (例如,lucid控制台在15点1024x600减去一个任务栏,WM装置为我提供了85x28细胞的空间。)
如果您的程序需要如此笨拙的vt大小132x50,请将用户的请求作为先决条件。或者只是让程序实际运行在任何可变大小上。