終端控制轉義序列的研究


上次在研究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


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com