相思雨
The Apple of My Eye.

今天看见有人在论坛问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)

posted on 2012-09-29 15:27  相思雨  阅读(682)  评论(0编辑  收藏  举报