终端控制转义序列的研究
来源:互联网 发布: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
- 终端控制转义序列的研究
- 控制终端代码 - Linux 控制终端转义和控制序列
- 基于Android系统的智能家居控制终端研究与实现
- JavaScript的转义序列
- C++转义序列的编码
- 无法识别的转义序列
- 无法识别的转义序列
- C++转义序列的编码
- 终端里面常用的转义字符串
- 修改环境变量和终端shell的提示符(终端转义变色)
- 关于linux终端的研究
- 关于linux终端的研究
- 转义序列
- Java Unicode转义字符的小小研究
- C++转义序列的编码 bondini.cpp
- 11. 其他的非标准ANSI转义序列
- C# 无法识别的转义序列
- C C++预定义的转义序列
- JVM类加载
- Attach()函数和Detach()函数
- 最近钓鱼岛事件后日本民众的反应(下)
- MyEclipse 6.5.1 GA 下载
- [DB]ORACLE监控表空间
- 终端控制转义序列的研究
- Oracle中的CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2
- DroidDraw
- 11111
- linux ls 命令 最常用的选项
- 数据加密
- qsort&&bsearch
- powerbuilder 读取excel报表中的隐藏列
- Linux 的多线程编程的高效开发经验