终端控制转义序列的研究

来源:互联网 发布:unix socket编程 编辑:程序博客网 时间:2024/04/30 09:00

上次在研究libnds的时候,看到一些代码:
iprintf("     /x1b[30;1mwww.devkitpro.org/n");
作用就是把这行字用灰色打印出来。
而下面这行:
iprintf("/x1b[10;0HFrame = %d",frame);
则是在第10行第0列打印文字。
这就是转义序列的效果。这里的转义序列类似于/n/t之类的转义符号,但是功能却不同,他们是用来进一步控制输出格式(如颜色,输出位置)的。

转义序列必须由<ESC>也就是第ASCII的27号字符,十六进制是0x1b来引导。
下面把转义序列进行分类讨论

设备状态
下面的代码用来返回终端或显示设置和各种相关的实现
查询设备代码    <ESC>[c
* 从设备请求一个设备报告代码。
报告设备代码    <ESC>[{code}0c
* 在响应中产生产生一个查询设备代码请求。
查询设备状态    <ESC>[5n
* 从设备请求一个设备状态响应。
报告设备状态正常    <ESC>[0n
* 在相应中产生一个查询设备状态请求,报告设备功能正常。
报告设备失败    <ESC>[3n
* 在相应中产生一个查询设备状态请求,报告设备功能不正常。
查询光标位置    <ESC>[6n
* 从设备请求光标位置的响应报告。
报告光标位置    <ESC>[{ROW};{COLUMN}R
* 产生一个光标位置查询请求,报告当前光标位置。

终端设置
重置设备        <ESC>c
* 重置所有终端设置为默认值。
启用自动换行    <ESC>[7h
* 如果文本长度超过行的最大宽度将会从下一行继续显示。
禁用自动换行    <ESC>[7l
* 禁用自动换行。

字体
设置默认字体    <ESC>(
* 设置默认字体.
设置备用字体    <ESC>)
* 设置备用字体

光标控制
设置光标位置    <ESC>[{ROW};{COLUMN}H
* 根据提供的行列值设置光标位置
光标向上移动    <ESC>[{COUNT}A
* 将光标上移,默认上移一行。
光标向下移动    <ESC>[{COUNT}B
* 将光标下移,默认下移一行。
光标向前移动    <ESC>[{COUNT}C
* 将光标前移,默认上移一列。
光标向后移动    <ESC>[{COUNT}D
* 将光标后移,默认后移一列。
强制设置光标位置    <ESC>[{ROW};{COLUMN}f
* 定义光标的位置.
保存光标位置    <ESC>[s
* 保存当前光标位置。
还原光标位置    <ESC>[u
* 还原保存的光标位置。
保存光标位置和属性<ESC>7
* 保存当前光标位置。
还原光标位置和属性<ESC>8
* 还原当前光标位置。

滚动
滚动屏幕        <ESC>[r
* 对整个显示区域启用滚动。
滚动屏幕        <ESC>[{start};{end}r
* 对指定的行间区域启用滚动。
向下滚动        <ESC>D
* 向下滚动一行。
向上滚动        <ESC>M
* 向上滚动一行。

制表控制
设置制表符     <ESC>H
* 在当前位置设置制表符。
清除制表符     <ESC>[g
* 在当前位置清除制表符。
清除所有制表符    <ESC>[3g
* 清除所有制表符。

清除文本
清除到行尾    <ESC>[K
* 清除从当前位置到当前行尾的文本。
清除到行首    <ESC>[K
* 清除从当前位置到当前行首的文本。
清除当前行    <ESC>[2K
* 清除整个当前行。
向下清除        <ESC>[J
* 从当前行向下清除到屏幕底部。
向上清除        <ESC>[J
* 从当前行向上清除到屏幕顶部。
清除屏幕        <ESC>[2J
* 清除屏幕和背景颜色后将光标移动到开头位置。

打印
打印屏幕        <ESC>[i
* 打印当前屏幕。
打印行        <ESC>[1i
* 打印当前行。
停止打印日志    <ESC>[4i
* 禁用日志。
开始打印日志    <ESC>[5i
* 开始打印日志,所有接受到的文本将会反应到打印机上。

定义按键
开始定义按键    <ESC>[{key};"{string}"p
* 将一个字符串或一段文本关联到键盘上的一个按键,{key}用来指示要关联的按键的十进制ASCII值。

设置显示属性
设置显示模式    <ESC>[{attr1};...;{attrn}
      0    重置所有属性
      1    明亮的
      2    暗淡的
      4    带下划线的
      5    闪烁的
      7    反转的
      8    隐藏的

      前景颜色
      30    黑
      31    红
      32    绿
      33    黄
      34    蓝
      35    品红
      36    青
      37    白

      背景颜色
      40    黑色
      41    红色
      42    绿色
      43    黄色
      44    蓝
      45    品红
      46    青
      47    白

这里有英文的参考:
http://www.termsys.demon.co.uk/vtansi.htm

原创粉丝点击