标准xterm程序具有Tek4014仿真功能,可用于一些简单的图形输出。然而,这在大多数(所有?)成功者中都没有实现,例如rxvt,gnome-terminal或kterm。
但是,几乎所有X11终端都将xterm
报告为环境变量TERM
的(部分),这使得程序难以确定底层终端是否具有图形功能。
是否有可能以编程方式找到它?并且,是否有现代终端窗口(xterm旁边)实现Tek4014图形,可能作为附件?
答案 0 :(得分:1)
实际上 kterm 根据其菜单提供Tek4014仿真。你可能指的是KDE konsole ,但没有。据报道,TeraTerm(Windows应用程序)也支持该功能。
回到这一点:没有有用的方法来告知给定的终端是否支持给定的功能。一些终端返回状态信息,该状态信息告知它是什么类型的终端,以及它可能具有哪些可选功能(基于来自DEC和类似终端的设备响应)。 Tektronix终端没有此类状态查询/响应(请参阅XTerm Control Sequences)。
在任何情况下都依赖状态响应并不能给予很多保证,因为一些开发人员硬编码响应以匹配xterm。
由于终端不会告诉您,唯一的方法是通过实际检查来验证。有人可能构建一个程序,可以做screendumps并验证终端响应序列,但仍然存在缺陷,即vt100(或类似)和tek4014之间的转换可能无法使用相同的转义序列完成xterm的。毕竟,该转义序列不在任何硬件终端的标准指令集中。
答案 1 :(得分:0)
发送设备属性序列将使终端以隐藏字符串回复。像vim
这样的程序使用它来探测它们正在处理的xterm
版本,但我不知道解释结果的具体文档。也许读源?
请参阅:
What is the ANSI escape code sequence "ESC[>c"?
亲自尝试:
printf "\E[c\n" ; sleep 1 ; echo
我的非xterm xterm兼容终端说“\ E [?1; 2c”返回。
答案 2 :(得分:0)
如果您可以访问终端运行的X11显示器,则可以执行以下操作。输出“进入Tektronix模式”转义序列"\E[?38h"
并观察要打开的新窗口。 WM_CLIENT_LEADER
属性应该是原始终端窗口的ID,WM_CLASS属性应该包含“tektronix”(我只检查了实际的xterm应用程序)。
如果您需要从文本模式应用程序执行此操作,可以尝试检查切换到Tek窗口是否实际执行了某些操作。例如,
echo -en '\n\E[?38h' && echo -en 12345678 && echo -en '\E\003' && \
echo -en '\e[6n' && sleep 1 && echo -en '\n'
打印换行符,切换到Tek窗口,在那里打印一些字符,返回到VT窗口,并请求光标位置报告。由于所有打印都处于Tek模式,因此光标应保留在第1列中。但是,如果终端不支持Tek模式,则字符将打印在主窗口中,列将为> 1。