zoukankan      html  css  js  c++  java
  • ANSI/VT100 Terminal Control Escape Sequences

      你知道吗,用 printf 打印一些特殊字符序列可以实现对终端的控制哎~(如终端背景色,前景色,清屏,状态设置……),由于资料不是太多,稍微整理了一下!(试了下,在win 下不起作用!) 原址: http://www.termsys.demon.co.uk/vtansi.htm

    一、前言

    Many computer terminals and terminal emulators support colour and cursor control through a system of escape sequences. One such standard is commonly referred to as ANSI Colour. Several terminal specifications are based on the ANSI colour standard, including VT100.

    The following is a partial listing of the VT100 control set.

    <ESC> represents the ASCII "escape" character, 0x1B, \033. Bracketed tags represent modifiable decimal parameters; eg. {ROW} would be replaced by a row number.

    二、设置选项目录 

    [ Status | Setup | Fonts | Cursor | Scrolling | Tabs | Erasing | Printing | Keyboard | Colours ]

    1.Device Status

    The following codes are used for reporting terminal/display settings, and vary depending on the implementation:
    Query Device Code <ESC>[c
    Requests a Report Device Code response from the device(我的电脑为 62;9;c).

    Report Device Code <ESC>[{code}0c
    Generated by the device in response to Query Device Code request.

    Query Device Status <ESC>[5n
    Requests a Report Device Status response from the device.

    Report Device OK <ESC>[0n
    Generated by the device in response to a Query Device Status request; indicates that device is functioning correctly.

    Report Device Failure <ESC>[3n
    Generated by the device in response to a Query Device Status request; indicates that device is functioning improperly.

    Query Cursor Position <ESC>[6n
    Requests a Report Cursor Position response from the device.

    Report Cursor Position <ESC>[{ROW};{COLUMN}R
    Generated by the device in response to a Query Cursor Position request; reports current cursor position.

    2.Terminal Setup

    The h and l codes are used for setting terminal/display mode, and vary depending on the implementation. Line Wrap is one of the few setup codes that tend to be used consistently:

    Reset Device <ESC>c
    Reset all terminal settings to default.

    Enable Line Wrap <ESC>[7h
    Text wraps to next line if longer than the length of the display area.

    Disable Line Wrap <ESC>[7l
    Disables line wrapping.

    3.Fonts

    Some terminals support multiple fonts: normal/bold, swiss/italic, etc. There are a variety of special codes for certain terminals; the following are fairly standard:

    Font Set G0 <ESC>(
    Set default font.

    Font Set G1 <ESC>)
    Set alternate font.

    4.Cursor Control

    Cursor Home <ESC>[{ROW};{COLUMN}H
    Sets the cursor position where subsequent text will begin. If no row/column parameters are provided (ie.<ESC>[H), the cursor will move to the home position, at the upper left of the screen.

    Cursor Up <ESC>[{COUNT}A
    Moves the cursor up by COUNT rows; the default count is 1.

    Cursor Down <ESC>[{COUNT}B
    Moves the cursor down by COUNT rows; the default count is 1.

    Cursor Forward <ESC>[{COUNT}C
    Moves the cursor forward by COUNT columns; the default count is 1.

    Cursor Backward <ESC>[{COUNT}D
    Moves the cursor backward by COUNT columns; the default count is 1.

    Force Cursor Position <ESC>[{ROW};{COLUMN}f
    Identical to Cursor Home.

    Save Cursor <ESC>[s
    Save current cursor position.

    Unsave Cursor <ESC>[u
    Restores cursor position after a Save Cursor.

    Save Cursor & Attrs <ESC>7
    Save current cursor position.

    Restore Cursor & Attrs <ESC>8
    Restores cursor position after a Save Cursor.

    5.Scrolling

    Scroll Screen <ESC>[r
    Enable scrolling for entire display.

    Scroll Screen <ESC>[{start};{end}r
    Enable scrolling from row {start} to row {end}.

    Scroll Down <ESC>D
    Scroll display down one line.

    Scroll Up <ESC>M
    Scroll display up one line.

    6.Tab Control

    Set Tab <ESC>H
    Sets a tab at the current position.

    Clear Tab <ESC>[g
    Clears tab at the current position.

    Clear All Tabs <ESC>[3g
    Clears all tabs.

    7.Erasing Text

    Erase End of Line <ESC>[K
    Erases from the current cursor position to the end of the current line.

    Erase Start of Line <ESC>[1K
    Erases from the current cursor position to the start of the current line.

    Erase Line <ESC>[2K
    Erases the entire current line.

    Erase Down <ESC>[J
    Erases the screen from the current line down to the bottom of the screen.

    Erase Up <ESC>[1J
    Erases the screen from the current line up to the top of the screen.

    Erase Screen <ESC>[2J
    Erases the screen with the background colour and moves the cursor to home.

    8.Printing

    Some terminals support local printing:
    Print Screen <ESC>[i
    Print the current screen.

    Print Line <ESC>[1i
    Print the current line.

    Stop Print Log <ESC>[4i
    Disable log.

    Start Print Log <ESC>[5i
    Start log; all received text is echoed to a printer.

    9.Define Key

    Set Key Definition <ESC>[{key};"{string}"p
    Associates a string of text to a keyboard key. {key} indicates the key by its ASCII value in decimal.

    10.Set Display Attributes

    Set Attribute Mode <ESC>[{attr1};...;{attrn}m
    Sets multiple display attribute settings. The following lists standard attributes:
    0 Reset all attributes  关闭所有属性
    1 Bright 
    2 Dim
    4 Underscore  下划线
    5 Blink           闪烁
    7 Reverse       反显
    8 Hidden        消隐

    Foreground Colours
    30 Black
    31 Red
    32 Green
    33 Yellow
    34 Blue
    35 Magenta     紫
    36 Cyan          深绿
    37 White

    Background Colours(颜色对应前景色一样)
    40 Black
    41 Red
    42 Green
    43 Yellow
    44 Blue
    45 Magenta
    46 Cyan
    47 White

    (注:有些字符序列貌似不是太通用,支持不太好!)

    三、实战

    1.清屏

    printf("\033[1H\033[2J");      #操作光标实现

    2.设置前景及背景色

    printf("\033[43;31mhello world\033[0m");



    Stay hungry Stay foolish
  • 相关阅读:
    阿里云CentOS主机修改默认SSH登录的22端口
    python跨文件设置全局变量
    python类装饰器
    执行python manage.py celery beat-l info 时报错 SystemError:<class 'OSError'>可能还会有其他报错
    利用Python脚本实现发送邮件
    python操作pymysql
    python-两个数组元素一样,位置个数不相同,按照一个标准的列表实现另一个列表的排序
    XORM高级操作
    flutter踩坑指南 配置篇
    create-react-app项目暴露webpack配置文件
  • 原文地址:https://www.cnblogs.com/xiangzi888/p/2437857.html
Copyright © 2011-2022 走看看