获取Perl中的当前终端颜色对

时间:2011-02-14 02:44:14

标签: perl termcap

我正在尝试在终端窗口中了解彩色文本。 (如果重要的是我在OS X上使用Terminal.app。)我想得到终端的当前前景色和背景色对。看起来我应该能够使用Term :: Cap库在perl脚本中获取此信息,但解决方案使我无法解决。

在perl脚本中,如何查询终端的当前前景色和背景色对值?

3 个答案:

答案 0 :(得分:2)

我不认为大多数终端都支持报告这个 - 并且它看起来不像termcap或terminfo有任何条目。您只需要根据需要设置颜色对,而不是询问终端现在设置的颜色。在ECMA-48标准中(在ANSI X3.64之后更为人所知的“ANSI”,以前它曾经存在),唯一引用颜色的命令是SGR“Set Graphic Rendition”,它纯粹是只写的。 / p>

答案 1 :(得分:2)

该功能超出了terminfo和termcap的范围,因为它处理终端响应,而terminfo / termcap描述了这些功能:

  • 如何告诉终端执行一些常用的功能(例如清除屏幕),或
  • 某些特殊键(例如 Home )从键盘发送的字符序列。

虽然原则上对可以成为终端描述的一部分没有限制,但在20世纪80年代,响应的终端之间几乎没有共性。一些终端可以报告特定功能,其中大多数是恒定的(例如,版本信息)。大多数变量响应来自terminfo / termcap在X / Open Curses中或多或少地固化。 ncurses extends that,但同样,大多数扩展程序都是功能特殊键

Terminal.app实现了 xterm 最常用的功能,但(与其他模仿者一样)省略了大多数终端响应。除此之外, xterm 还提供了终端响应,可以告诉应用程序当前窗口的颜色。有几个命令行实用程序(xtermsetxtermcontrol)已被编写以使用此信息(同样,它们仅涵盖了所有组成部分)。使用 xtermcontrol 表明此区域缺少Terminal.app - 请参见屏幕截图:

screenshot showing Terminal.app vs xterm using xtermcontrol

答案 2 :(得分:1)

关于perl或Terminal.app的Dunno,但是如果分别输出4196363 0 -1 "\033]10;?\07",xterm等会将前景/背景颜色控制序列写入stdin。请特别查看http://invisible-island.net/xterm/ctlseqs/ctlseqs.htmlhttp://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Operating-System-Controls