代码之家  ›  专栏  ›  技术社区  ›  Cyker

如何在ncurses中输出终端控制字符?[重复]

  •  0
  • Cyker  · 技术社区  · 7 年前

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

    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 回复  |  直到 11 年前
        1
  •  4
  •   William McBrine    11 年前

    不可以。唯一可行的方法是自己解析字符串,将转义码转换回相应的curses命令,与输出一起发出。

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