Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2091574
  • 博文数量: 413
  • 博客积分: 10926
  • 博客等级: 上将
  • 技术积分: 3862
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-09 18:14
文章分类

全部博文(413)

文章存档

2015年(5)

2014年(1)

2013年(5)

2012年(6)

2011年(138)

2010年(85)

2009年(42)

2008年(46)

2007年(26)

2006年(59)

分类: C/C++

2007-09-18 19:21:46

=====================================================================================
题外话:
今天看见有人在论坛问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为微秒数) <> ┃
 ┗━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

                       特  殊  的  上  色  控  制  符

 ·:号
 其实就是当你回文章时系统在文章前所加的:,它会使文章颜色变为暗青色,与*[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)

                               参  考  资  料

 ·yaho·[讲座]ANSI控制码(zz)·BBS 大话西游站
 ·Gemini·ANSI控制码解说·华南网木棉站
 ·dntx·初学者入门要点(by华南木棉chaoshanfeng)·BBS 大话西游站
 ·dntx·代码演示(zz)·BBS 大话西游站
 ·MidautumnDay·ASCII入门教程·逸仙时空
 ·dntx·光标控制符解说(转载自紫丁香)·BBS 大话西游站
 ·fe·如何使签名档超过六行·暨南园BBS
 ·flubber·色彩常识·BBS 水木清华站
阅读(2342) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~