我正在构建ncurses库的轻量级版本。到目前为止,它在VT100兼容终端上运行得非常好,但win32 console无法将\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代码级别执行哪些操作
Tags:
[更新]对于最新的Windows 10,请阅读@brainslaugs83的有用贡献,就在下面对这个答案的评论中
而对于
Windows 10 Anniversary Update
之前的版本:ANSI.SYS有一个限制,即它只能在Windows 95 Vista下MS-DOS子系统的上下文中运行
Microsoft KB101875解释了如何在命令窗口中启用ANSI.SYS,但它不适用于Windows NT。根据文章:we all love colors,现代版本的Windows没有这种良好的ANSI支持
相反,Microsoft创建了许多函数,但这远远不是操作ANSI/VT100转义序列的需要
有关更详细的说明,请参见Wikipedia article:
因此,我认为Jason Hood的ANSICON是您的解决方案。它是用C编写的,支持32位和64位版本的Windows以及the source is available
此外,我还发现了一些其他类似的问题或帖子,这些问题或帖子最终都得到了ANSICON的回答:
从Windows10th2(v1511)开始,
conhost.exe
和cmd.exe
支持ANSI和VT100开箱即用的转义序列(尽管they have to be enabled)有关更多详细信息,请参见my answer over at superuser
从Windows 10开始,您可以使用
ENABLE_VIRTUAL_TERMINAL_PROCESSING
启用ANSI转义序列:https://msdn.microsoft.com/en-us/library/windows/desktop/mt638032(v=vs.85).aspx
相关问题 更多 >
编程相关推荐