0

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

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

这是

"\x1B[8;50;132t"

虽然屏幕大小调整成功但有一个问题这是 COBOL 程序用来执行命令的代码

   pg -f FILETOSHOW

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

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

4

2 回答 2

3

转义序列记录在 XTerm 控制序列中,在“使用 CSI 的函数,按最终字符排序”部分中,在这一行下:

CSI Ps ; Ps ; Ps t

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

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 回答