今天看见有人在论坛问ASCII特殊字符的问题,就google了一份比较全面的资料。
值得说明的是,文中介绍的内容不仅在shell(或者说commond line)有效,
还可以用在C程序中,不过要将Esc用0x1b表示,比如:
printf("%c[2J", 0x1b); /* Clean screen */
printf("%c[0;0H", 0x1b); /* Move cursor to (0,0) */
===================================================
解 说
BBS支持ANSI/3.64控制码标准,ANSI控制码均以Esc[作为控制码的开始标志。
BBS中ESC字符的输入方法是[ESC]+[ESC],在编辑器中用"*"代表。
*是按两下ESC键或者按ALT+027(数字键盘)两次,在Cterm里面也可以按Insert。
签名档有六行的行数限制(所谓六行,是输入字符占六行 而不是显示字符占六行),
BBS目前的每行字符限制在240左右,因而一个签名档总共可使用大约1320个字符。
做活动签名档就要掌握ANSI光标控制码,原理和动画制作一样。
DOS支持大部分ANSI控制码,在DOS下使用请看c:>help ansi.sys(无效命令?)
下面是BBS常用ANSI控制码表,注意控制符区分大小写。
DEVICE=ANSI.SYS
BBS 常 用 ANSI 控 制 码 表
【光标控制】
┏━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 控 制 码 ┃ 说 明 ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [X;YH ┃ 将光标移至第 X 行,第 Y 列的位置。 ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [nA ┃ 光标上移 n 列。<<若至屏幕顶端则无效>> ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [nB ┃ 光标下移 n 列。<<若至屏幕底端则无效>> ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [nC ┃ 光标向右 n 行。<<若已至屏幕最右端则无效>> ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [nD ┃ 光标向左 n 行。<<若已至屏幕最左端则无效>> ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [6n ┃ 报告光标位置。 ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [s ┃ 保存目前的光标位置。 ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [u ┃ 取出保存的光标位置来使用。 ┃
┗━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
注: BBS 系统一屏显示大约是 25*80,后两行为 BBS 系统占用,实际只有 23*80。
【屏幕控制】
┏━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 控 制 码 ┃ 说 明 ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [2J ┃ 清除屏幕。 <<功能和 DOS 的 CLS 命令一样>> ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [K ┃ 将光标位置开始至本列结束的所有字符清除。 ┃
┗━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
【显示字符属性控制】
┏━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 控 制 码 ┃ 说 明 ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ ┃Ⅰ设定显示字符的属性状态。 ┃
┃[n1;n2;......m┃Ⅱ若有两个以上的属性状态要设定则以分号将代码(n1;n2;..)隔开┃
┃ ┃Ⅲ除非重新设定,否则原设定之属性一直被保留。 ┃
┗━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┏━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 代 码 ┃ 意 义 ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ 0 ┃ 所有属性 OFF,即返回正常显示模式 (Normal) ┃
┃ 1 ┃ 高亮度显示 (Bright) ┃
┃ 4 ┃ 加下划线 (Underline) (注1) ┃
┃ 5 ┃ 闪烁显示 (Flash) (注2) ┃
┃ 7 ┃ 反相显示 (Inverse) ┃
┃ 8 ┃ 不可见 (Invisable) ┃
┣━━━┳━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ 前景 ┃ 背景 ┃ 颜 色 ┃
┣━━━╋━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ 30 ┃ 40 ┃ 黑色 ┃
┃ 31 ┃ 41 ┃ 红色 ┃
┃ 32 ┃ 42 ┃ 绿色 ┃
┃ 33 ┃ 43 ┃ 黄色 ┃
┃ 34 ┃ 44 ┃ 蓝色 ┃
┃ 35 ┃ 45 ┃ 紫红色 ┃
┃ 36 ┃ 46 ┃ 青蓝色 ┃
┃ 37 ┃ 47 ┃ 白色 ┃
┗━━━┻━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
注1: 老版本的Sterm不支持下画线功能,现在的1.266+版本支持下划线,且下划线的颜
色和前景色一致。例如,前景色是绿色的,则下划线也是绿色。而使用Cterm看到
的下划线一律都为白色,不论前景色是什么颜色。
注2: Sterm和Cterm显示效果略有不同。本来背景色是没有高亮的,但是Sterm 1.266版
本却有显示高亮背景的本领,就是通过这个相反显示函数。例如高亮红色前景和
低亮的黄色背景,如果你用Sterm 1.266版来看的话,加了反显函数之后那个例子
变成了高亮的红色背景和低亮的黄色前景,就是前景色和背景色完全互换,连亮
度也互换。但如果用Cterm来看得话,加了反显函数之后的例子是低亮的红色背景
和高亮的黄色前景,颜色互换,亮度不换,因为Cterm无法显示出高亮的背景。
【字体控制】
┏━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 控 制 码 ┃ 说 明 ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [0I ┃ 恢复正常字体 ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [1I ┃ 宋体 ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [2I ┃ 黑体 ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [3I ┃ 楷体 ┃
┗━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
【特殊控制】
┏━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 控 制 码 ┃ 说 明 ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [G ┃响铃 ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [nU ┃URL确认(n个字节) ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ [nM ┃延时(n为微秒数) <<Cterm和Sterm 1.266+版本才支持此功能>> ┃
┗━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
特 殊 的 上 色 控 制 符
·:号
其实就是当你回文章时系统在文章前所加的:,它会使文章颜色变为暗青色,与*[0;36m
效果相同,这个冒号必须是英文输入法状态下的冒号,而且必须处在该行第一的位置,
冒号后可以有空格,该符号只对本行内容有效。
·【 在……………… 】格式
这种格式也要处在该行的起始位置,效果与*[1;33m的效果相同,【后要空上一个英文字
符的位置,那个“在”字不能少,而且必须是第一个字,后面的内容任意。该符号对从
此行开始的一屏内所有文字都有效。
·>号
效果和:号完全一样,也是要放在该行的起始位置,>号后面可以不空格,也可以加空格,
效果都一样。该符号仅对本行的内容有效。
·==>号
效果相当于*[1;33m,位置也要位于该行起始位置,==>后面不需空格,加空格也可以,
该符号对从此开始一屏内的内容均有效。
色 彩 常 识
·三原色: 红黄蓝
红+黄=橙 黄+蓝=绿 红+蓝=紫 红+黄+蓝=黑
·三原光:红绿蓝
红+绿=黄 绿+蓝=青 红+蓝=紫 红+绿+蓝=白
·计算机上的颜色系统都是按照三原光设置的。
BBS 系 统 的 一 些 操 作 方 法
·特殊命令: (请先按 ESC, 再选择以下项目)
(I)汇入档案 (E)汇出档案 (C)观看彩色编辑成果
(B)设定背景色彩 (F)设定前景色彩 (R)还原色彩
(ESC)彩色控制码 (M)区块处理 (L)开或关讯息栏
·一般命令:
^W,^X 存档後结束编辑 丨 ^L,^G 重绘屏幕
^Q 显示辅助画面 丨 ^Z 查看或回信息
·游标移动指令:
^P,↑ 向上 | ^N,↓ 向下 | ^R,← 向左 | ^V,→ 向右
^A,Home 至行首 | ^E, End 至行末 | ^B,PgUp 上一页 | ^F,PgDn 下一页
^S 档案开头 | ^T 档案结尾 | Esc-s 搜寻 | Esc-n 继续搜寻
Esc-g 跳到##行 │
·删除命令:
^O,Ins 切换插入/置换模式 丨 ^H,BS 删除左方字符 丨 ^Y 删除一行
^D,DEL 删除目前字符 丨 ^K 删至行末 丨
·区块处理:
^U 区块标定 丨 ^C 复制区块 丨 Esc-d 清除区块 丨 Esc-Q 清除标定
ANSI.SYS and NANSI.SYS Functions - ANSI x3.64
ESC[y,xH Cursor position y,x
ESC[nA Cursor Up n lines
ESC[nB Cursor Down n lines
ESC[nC Cursor Forward n characters
ESC[nD Cursor Backward n characters
ESC[y;xf Cursor position y,x (less frequently used)
ESC[y;xR Cursor position report y,x
ESC[6n Device status report (cursor pos)(n is constant 'n')
ESC[s Save cursor position
ESC[u Restore cursor position
ESC[2J Erase display
ESC[K Erase to end of line
ESC[nL Inserts n blank lines at cursor line. (NANSI)
ESC[nM Deletes n lines including cursor line. (NANSI)
ESC[n@ Inserts n blank chars at cursor. (NANSI)
ESC[nP Deletes n chars including cursor char. (NANSI)
ESC[nP Deletes n chars including cursor char. (NANSI)
ESC[n;ny Output char translate (NANSI)
When first char is encountered in output request, it
is replaced with the second char. When no parameters
are given, all chars are reset.
ESC["str"p Keyboard Key Reassignment. The first char of str gives
the key to redefine; the rest of the string is the
key's new value. To specify unprintable chars, give
the ASCII value of the char outside of quotes, as a
normal parm. IBM function keys are two byte strings.
Ex: ESC[0;";dir a:";13;p
redefines F1 to have the value "dir a:" followed by CR.
If no parameters given, all keys are reset to their
default values. Single or double quotes are valid.
ESC[n;n;...nm Set Graphics Rendition is used to set attributes as
well as foreground and background colors. If multiple parameters
are used, they are executed in sequence, and the effects are
cumulative. 'n' is one of the following attributes or colors:
0 All attributes off 5 Blink
1 Bold 7 Reverse Video
2 Dim 8 Invisible
4 Underline
Foreground colors Background colors
30 Black 40 Black
31 Red 41 Red
32 Green 42 Green
33 Yellow 43 Yellow
34 Blue 44 Blue
35 Magenta 45 Magenta
36 Cyan 46 Cyan
37 White 47 White
ESC[=nh Set mode (see screen modes for n)
ESC[=nl Reset Mode (see screen modes for n)
Screen modes are similar to those found in the IBM BIOS:
0 text 40x25 Black & White
1 text 40x25 Color
2 text 80x25 Black & White
3 text 80x25 Color
4 320x200 4 bits/pixel
5 320x200 1 bit/pixel
6 640x200 1 bit/pixel
7 cursor wrap
13 320x200 4 bits/pixel (EGA)
14 640x200 4 bits/pixel (EGA)
16 640x350 4 bits/pixel (EGA)