有没有办法在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重定向输出时。
答案 0 :(得分:2)
没有。实现这项工作的唯一方法是自己解析字符串,将转义代码转换回相应的curses命令,以便与输出一起发布。
您应该意识到的一点是,这些代码虽然广泛实施,但并不普遍。 curses的主要目的之一是将其标准命令转换为一系列特定于终端的控制代码。因此,通过可能或可能不对应当前终端类型的代码并不真正适合curses模型。更为根本的是,代码会以诅咒无法跟踪的方式改变终端状态,从而使其窗口结构的内容不再与屏幕上的内容相匹配。