【发布时间】:2021-01-15 12:10:54
【问题描述】:
我正在构建 ncurses 库的轻量级版本。到目前为止,它在兼容 VT100 的终端上运行良好,但 win32 控制台无法将 \033 代码识别为转义序列的开头:
# include <stdio.h>
# include "term.h"
int main(void) {
puts(BOLD COLOR(FG, RED) "Bold text" NOT_BOLD " is cool!" CLEAR);
return 0;
}
为了加载 ANSI.SYS 驱动程序并识别 ANSI/VT100 转义序列,需要在 C 代码级别做什么?
【问题讨论】:
-
请注意,在 Windows 10 的最新版本中,游戏规则发生了巨大变化。
-
仅供参考,在最新的 Windows 10 中,您可以通过以下 reghack 在 conhost 中启用 ANSI -- 在
HKCU\Console创建一个名为VirtualTerminalLevel的DWORD并将其设置为0x1;然后重新启动 cmd.exe。 -- 可以用下面的powershell"?[1;31mele ?[32mct ?[33mroni ?[35mX ?[36mtar ?[m".Replace('?', [char]27);进行测试。 -
upd docs.microsoft.com/en-us/windows/console/… here 如何在不编辑注册表并可能破坏其他应用程序的情况下启用它
标签: windows terminal console-application ncurses ansi-escape