如何在ncurses的mvwprintw内部使用ANSI转义代码?

问题描述 投票:4回答:1

[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重定向输出时。

ncurses ansi-escape
1个回答
2
投票

没有进行该工作的唯一方法是自己解析该字符串,将转义码重新转换为适当的curses命令,然后与您的输出一起发出。

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

© www.soinside.com 2019 - 2024. All rights reserved.