上次在研究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
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。