如何在ncurses中使用mvwprintw中的ANSI转义码?

时间:2014-12-13 21:53:44

标签: ncurses ansi-escape

有没有办法在mvwprintw内使用ANSI转义码?

mvwprintw(window, 0, 0,"%c[%dmCOLORED_TEXT!\n", 0x1B, 32);//doesn't work

即使:

printf("%c[%dmCOLORED_TEXT\n", 0x1B, 32); //works

这适用于使用wattron / wattroff不方便的情况;例如,当从输出此类转义码的进程的stdout重定向输出时。

1 个答案:

答案 0 :(得分:2)

没有。实现这项工作的唯一方法是自己解析字符串,将转义代码转换回相应的curses命令,以便与输出一起发布。

您应该意识到的一点是,这些代码虽然广泛实施,但并不普遍。 curses的主要目的之一是将其标准命令转换为一系列特定于终端的控制代码。因此,通过可能或可能不对应当前终端类型的代码并不真正适合curses模型。更为根本的是,代码会以诅咒无法跟踪的方式改变终端状态,从而使其窗口结构的内容不再与屏幕上的内容相匹配。