|
正在为jinix实现vt100规范,找到的例子,顺便写了个demo(可以在linux上测试) vt100 spec: http://vt100.net/docs/vt100-ug/ msn: jinglexy at yahoo.com.cn
#include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string.h>
int main(int argc, char *argv[]) { printf("\033[2J\033[0;0H"); printf("\033[1;32m"); printf("x1y1"); printf("\0337"); printf("x2y2"); printf("\0338"); printf("\033[0m"); printf("\033[1;33m"); printf("abab\n");
fflush(stdin); fflush(stdout); fflush(stderr);
return 0; }
其他资料:
/* * vt100有14个控制字符,jinix暂时只实现其中几个 */ #define VT100_CTL_BEL 0x7 /* 铃声 */ #define VT100_CTL_BS 0x08 /* backspace: 后退一格(在行首不起作用) */ #define VT100_CTL_HT 0x09 /* 跳至下一个制表位.如果后面已没有制表位则跳至行尾 */ #define VT100_CTL_LF 0x0a /* 和0xb, 0xc一样,三者都表示换行 */ #define VT100_CTL_CR 0x0d /* 回车并换行 */ #define VT100_CTL_DEL 0x7f /* 忽略 */ #define VT100_CTL_ESC 0x1b /* 开始一个新的转义序列, 8进展是033 */
vga字符属性:
* +---------------------------------------------+ * + 0 1 2 | 3 | 4 5 6 | 7 + * +---------------|------|---------------|------+ * + 前景色 | 明亮 | 背景色 | 闪烁 + * +---------------|------|---------------|------+
esc转移序列的par:使用;隔开,最多4个,最常见的如m转移: 0 所有属性重设为默认值 1 设置边框 2 设置亮度减半(用一种颜色模拟另一种颜色) 4 设置底纹(用一种颜色模拟另一种颜色)(用于模拟的颜色由using ESC ] ...设置) 5 设置闪烁 7 设置反转视频(reverse video) 10 重设选定映像,显示控制标记,反转元素标记. 11 选择空映像,设置显示控制标记,重设反转标记. 12 选择空映像,设置显示控制标记,重设反转标记.(在完成映像表转换之前反转标记引起每一字节的高位反转.) 21 设置正常亮度(和 ECMA-48 不兼容) 22 设置正常亮度 24 关闭下划线 25 不闪烁 27 反转视频关闭 30 黑色背景 31 红色前景 32 绿色前景 33 棕色前景 34 蓝色前景 35 品红前景 36 孔雀蓝前景 37 白色前景 38 打开下划线,设置默认前景色 39 关闭下划线,设置默认前景色 40 黑色背景 41 红色背景 42 绿色背景 43 棕色背景 44 蓝色背景 45 品红背景 46 孔雀蓝背景 47 白色背景 49 设置默认背景色
|