Man page - console_codes(4)

Packages contains this manual

Available languages:

en fr pt_BR es pl ko ja ru zh_TW zh_CN de

Manual

CONSOLE_CODES

NAME 名 稱
DESCRIPTION 描 述
LINUX CONSOLE CONTROLS Linux終 端 控 制
Control characters 控 制 字 元
ESC- but not CSI-sequences 非 控 制 轉 義 序 列
ECMA-48 CSI sequence ECMA-48 CSI 序 列
ECMA-48 Set Graphics Rendition 設 定 圖 形 屬 性
ECMA-48 Mode Switches ECMA-48模 式 選 擇
ECMA-48 狀 態 報 告 命 令 .
DEC Private Mode(DECSET/DECRST)sequences DEC私 有 模 式 序 列 .
Linux Console Private CSI Sequences Linux控 制 檯 私 有 控 制 序 列
CHARACTER SETS 字 元 集
MOUSE TRACKING 滑 鼠 軌 跡
和 其 它 終 端 的 比 較
Control-character handling 控 制 字 元 處 理
Escape sequences 轉 義 序 列
CSI Sequences CSI 序 列
BUGS
參 見


NAME 名 稱

控 制 終 端 程 式 碼 - Linux 控 制 終 端 轉 義 和 控 制 序 列

DESCRIPTION 描 述

Linux控 制 檯 實 現 了 VT102和 ECMA-48/ISO 6429/ANSI X3.64終 端 控 制 的 子 集 , 這 個 子 集 很 龐 大 ,當 然 還 有 Linux自 己 私 有 的 控 制 序 列 ,以 改 變 顏 色 配 置 ,字 元 集 映 像 ,等 等 .在 下 面 將 要 給 出 的 表 格 中 ,第 二 列 為 指 定 的 功 能 給 出 了 ECMA-48 或 者 DEC助 記 符 (如 果 是 後 者 會 在 前 面 加 有 DEC字 首 ).沒 有 給 出 助 記 符 的 序 列 既 不 是 ECMA-48也 不 是 VT102字 元 .

在 所 有 標 準 輸 出 程 序 執 行 完 畢 ,並 且 一 個 字 元 流 被 送 到 控 制 檯 驅 動 程 式 準 備 顯 示 出 來 的 時 候 ,所 發 生 的 第 一 件 事 就 是 將 程 序 使 用 的 程 式 碼 轉 換 成 顯 示 使 用 的 程 式 碼 .

如 果 控 制 檯 工 作 於 UTF-8 模 式 ,那 麼 輸 入 的 位 元 組 會 首 先 編 碼 成 16位 的 Unicode 程 式 碼 .如 果 不 是 UTF-8模 式 ,那 麼 每 個 位 元 組 會 按 照 當 前 的 字 元 對 映 表 完 成 轉 換 (轉 換 成 Unicode編 碼 的 值 ). 參 看 下 面 將 要 討 論 的 CHARACTER SETS 一 章 .

在 一 般 情 況 下 ,Unicode 程 式 碼 被 轉 換 成 為 儲 存 在 影 片 儲 存 器 中 的 字 型 索 引 ,這 樣 對 應 的 具 體 字 元 (字 元 儲 存 在 影 片 ROM中 )就 顯 示 在 螢 幕 上 了 . 注 意 使 用 Unicode 編 碼 允 許 我 們 同 時 使 用 512 種 不 同 的 字 型 (和 計 算 機 硬 體 有 關 ).

如 果 當 前 的 Unicode 程 式 碼 是 一 個 控 制 字 元 ,或 者 系 統 目 前 正 在 處 理 一 個 轉 義 序 列 ,處 理 的 方 式 有 些 特 別 .它 不 會 被 轉 換 成 字 型 索 引 ,也 不 會 直 接 顯 示 在 螢 幕 上 .它 可 能 控 制 游 標 的 移 動 ,或 者 實 現 其 它 控 制 功 能 .參 看 下 面 的 LINUX CONSOLE CONTROLS 一 節 所 進 行 的 討 論 .

一 般 來 說 直 接 在 程 式 中 插 入 終 端 控 制 字 元 並 不 是 很 好 .Linux 支 持 終 端 相 容 的 terminfo(5) 資 料 庫 . 除 了 直 接 插 入 控 制 和 轉 義 序 列 ,也 可 以 使 用 象 ncurses(3), tput(1), 或 者 reset(1). 這 樣 的 顯 示 庫 或 者 工 具 .

LINUX CONSOLE CONTROLS Linux終 端 控 制

這 一 段 描 述 了 所 有 在 Linux控 制 檯 下 使 用 的 呼 叫 特 殊 功 能 的 控 制 字 元 和 轉 義 序 列 (例 如 .任 何 不 在 當 前 游 標 處 插 入 可 見 字 元 的 序 列 ).

Control characters 控 制 字 元

當 一 個 字 元 在 透 過 字 元 對 映 錶 轉 換 之 前 含 有 以 下 14個 程 式 碼 之 一 的 時 候 表 明 它 是 一 個 控 制 字 元 . 00(NUL),07(BEL),08(BS),09(HT),0a(LF),0b(VT), 0c(FF),0d(CR),0e(SO),0f(SI),18(CAN),1a(SUB), 1b(ESC),7f(DEL). 我 們 可 以 透 過 設 定 ‘顯 示 控 制 字 元 ’ 模 式 (見 下 文 )以 允 許 07,09,0b, 18,1a,7f 像 普 通 字 元 一 樣 顯 示 在 螢 幕 上 .另 一 方 面 ,在 UTF-8模 式 下 所 有 位 於 00-1f之 間 的 程 式 碼 都 被 認 為 是 控 制 字 元 ,而 不 管 是 否 處 於 ‘顯 示 控 制 字 元 ’模 式 .

一 個 控 制 字 元 會 立 刻 生 效 ,然 後 被 丟 棄 (即 使 是 在 轉 義 序 列 中 間 ), 之 後 轉 義 序 列 才 繼 續 處 理 下 一 個 字 元 . (在 任 何 情 況 下 ,ESC都 表 示 一 個 新 的 轉 義 序 列 的 開 始 ,可 能 導 致 前 一 個 序 列 的 非 正 常 終 止 ,CAN和 SUB 終 止 任 何 轉 義 序 列 .) 可 識 別 的 控 制 字 元 是 BEL,BS,HT,LF,VT,FF,CR,SO,SI,CAN, SUB,ESC,DEL,CSI.他 們 的 功 能 如 下 .:

BEL(0x07,ˆG)鈴 聲 ;

BS(0x08,ˆH)後 退 一 格 (在 行 首 不 起 作 用 );

HT(0x09,ˆI)跳 至 下 一 個 製 表 位 .如 果 後 面 已 沒 有 製 表 位 則 跳 至 行 尾 ;

LF(0x0A,ˆJ),VT(0x0B,ˆK),FF(0x0C,ˆL)三 者 都 表 示 換 行 ;

CR(0x0D,ˆM)回 車 並 換 行 ;

SO(0x0E,ˆN)啟 用 G1 字 元 集 , 如 果 設 定 了 LF/NL(新 行 模 式 )還 要 加 上 回 車 換 行 ;

SI(0x0F,ˆO)啟 用 G0 字 元 集 ;

CAN(0x18,ˆX),SUB(0x1A,ˆZ)兩 者 都 表 示 中 斷 轉 義 序 列 ;

ESC(0x1B,ˆ[)開 始 一 個 新 的 轉 義 序 列 ;

DEL(0x7F)忽 略 ;

CSI(0x9B)等 同 於 ESC [;

ESC- but not CSI-sequences 非 控 制 轉 義 序 列

Image grohtml-689664-1.png

ECMA-48 CSI sequence ECMA-48 CSI 序 列

CSI(或 者 ESC [)後 面 跟 的 引 數 序 列 大 部 分 是 NPAR(16), 就 是 由 分 號 隔 開 的 十 進 位 制 數 .空 引 數 或 缺 少 的 引 數 以 0處 理 . 可 以 用 一 個 問 號 代 替 引 數 序 列 .

在 任 何 情 況 下 ,系 統 讀 取 CSI [(或 者 ESC [ [)後 的 單 個 字 元 , 而 忽 略 整 個 序 列 .(用 於 忽 略 回 顯 功 能 鍵 .)

CSI 序 列 的 動 作 由 其 最 後 一 個 字 元 決 定 .

Image grohtml-689664-2.png

ECMA-48 Set Graphics Rendition 設 定 圖 形 屬 性

ECMA-48 SGR 序 列 ESC [ <parameters> m 設 定 顯 示 屬 性 . 同 樣 的 序 列 可 以 設 定 一 個 或 多 個 屬 性 .

Image grohtml-689664-3.png

ECMA-48 Mode Switches ECMA-48模 式 選 擇

ESC [ 3 h

DECCRM(預 設 關 閉 ): 顯 示 控 制 字 元 .

ESC [ 4 h

DECIM(預 設 關 閉 ): 設 定 插 入 模 式 .

ESC [ 20 h

LF/NL(預 設 關 閉 ): 自 動 在 CR後 加 上 LF,VT 或 者 FF.

ECMA-48 狀 態 報 告 命 令 .

ESC [ 5 n

裝 置 狀 態 報 告 (DSR): 以 ESC [ 0 n 應 答 (終 端 準 備 好 ).

ESC [ 6 n

游 標 位 置 報 告 (CPR): 以 ESC [ y ; x R 應 答 , 這 裡 x,y 指 游 標 位 置 .

DEC Private Mode(DECSET/DECRST)sequences DEC私 有 模 式 序 列 .

這 裡 給 出 的 序 列 在 ECMA-48中 沒 有 描 述 .我 們 列 出 了 設 定 模 式 序 列 ; 用 l替 換 最 後 一 個 h就 是 重 設 模 式 序 列 .
ESC [ ? 1 h

DECCKM(預 設 關 閉 ): 開 啟 時 游 標 鍵 送 出 ESC O 字 首 , 而 不 是 ESC [.

ESC [ ? 3 h

DECCOLM(預 設 = 80 行 ): 交 替 選 擇 80/132 行 模 式 .當 原 顯 示 模 式 不 足 以 滿 足 要 求 的 時 候 ,象 resizecons(8) 這 樣 的 使 用 者 程 式 會 改 變 終 端 顯 示 卡 的 硬 體 註 冊 .

ESC [ ? 5 h

DECSCNM(預 設 關 閉 ): 設 定 影 片 反 轉 模 式 .

ESC [ ? 6 h

DECOM(預 設 關 閉 ): 開 啟 時 ,游 標 位 置 用 相 對 於 捲 軸 左 上 角 的 位 置 表 示 .

ESC [ ? 7 h

DECAWM(預 設 關 閉 ): 開 啟 自 動 換 行 .在 這 種 模 式 下 ,一 行 中 超 過 80列 的 字 元 將 自 動 換 行 (在 DECCOLM開 啟 時 是 132列 ).

ESC [ ? 8 h

DECARM(預 設 關 閉 ): 開 啟 鍵 盤 自 動 重 複 .

ESC [ ? 9 h

X10 滑 鼠 報 告 (預 設 關 閉 ): 設 定 報 告 模 式 1(或 者 重 設 為 0)- 見 下 文 .

ESC [ ? 25 h

DECCM(預 設 開 啟 ): 設 定 游 標 可 見 .

ESC [ ? 1000 h

X11 滑 鼠 報 告 (預 設 關 閉 ): 設 定 報 告 模 式 2(或 者 重 設 為 0)- 見 下 文 .

Linux Console Private CSI Sequences Linux控 制 檯 私 有 控 制 序 列

下 面 的 序 列 既 不 屬 於 ECMA-48 字 元 也 不 屬 於 VT102.它 們 只 在 Linux控 制 檯 上 使 用 .顏 色 採 用 SGR 引 數 : 0 = 黑 色 ,1 = 紅 色 ,2 = 綠 色 ,3 =褐 色 ,4 = 藍 色 ,5 = 洋 紅 ,6 = 孔 雀 藍 ,7 = 白 色 .

Image grohtml-689664-4.png

CHARACTER SETS 字 元 集

核 心 可 以 完 成 以 下 四 種 字 元 轉 換 ,使 字 元 能 在 螢 幕 上 顯 示 . a)Latin1 -> PC,b)VT100 graphics -> PC,c)PC -> PC, d)user-defined(使 用 者 自 定 義 ).

有 兩 種 字 元 集 設 定 ,以 G0 和 G1定 義 ,當 前 字 元 集 必 定 是 其 中 之 一 .(初 始 化 為 G0.)鍵 入 ˆN 使 G1 成 為 當 前 字 元 集 ,鍵 入 ˆO 使 G0 成 為 當 前 設 定 .

變 數 G0 and G1 指 向 字 元 對 映 關 係 表 ,並 且 這 種 指 向 關 係 可 以 由 使 用 者 改 變 . 系 統 初 始 化 時 它 們 分 別 指 向 表 a)and b). 序 列 ESC( B ,ESC( 0 ,ESC( U 和 ESC( K 分 別 使 G0 指 向 字 元 對 映 表
a),b),c)和 d). 序 列 ESC )B ,ESC )0 ,ESC )U 和 ESC )K 分 別 使 G1 指 向 字 元 對 映 表 a),b),c)和 d).

序 列 ESC c 重 置 一 個 終 端 ,當 螢 幕 顯 示 出 現 混 亂 時 可 以 使 用 這 個 序 列 . 另 一 個 序 列 "echo ˆVˆO" 僅 僅 將 G0設 為 當 前 字 元 集 ,但 並 不 保 證 G0 指 向 對 映 表 a). 有 的 Linux發 行 版 中 提 供 一 個 叫 做 reset(1) 的 程 式 用 來 送 出 序 列 "echo ˆ[c". 如 果 你 的 系 統 終 端 變 數 沒 有 錯 誤 ( rs1=\Ec), 那 麼 使 用 "tput reset"也 可 以 達 到 同 樣 效 果 .

使 用 者 自 定 義 對 映 表 可 以 用 程 式 mapscrn(8). 定 義 .這 個 程 式 工 作 時 會 將 送 入 的 字 元 c透 過 關 係 式 s=map[c]對 映 到 字 元 s然 後 送 入 視 訊 記 憶 體 .字 元 s所 對 應 的 點 陣 圖 放 在 字 元 ROM裡 面 ,可 以 使 用 程 式 setfont(8).

來 改 變 .

MOUSE TRACKING 滑 鼠 軌 跡

滑 鼠 軌 跡 工 具 可 以 返 回 與 xterm 相 容 的 滑 鼠 狀 態 報 告 .因 為 控 制 檯 驅 動 沒 有 辦 法 知 道 滑 鼠 型 別 ,只 有 當 虛 擬 終 端 驅 動 接 收 到 滑 鼠 輸 入 輸 出 訊 息 更 新 時 才 會 將 這 些 報 告 返 回 給 控 制 檯 輸 入 流 ..這 些 滑 鼠 輸 入 輸 出 訊 息 由 gpm(8) 守 護 程 序 產 生 .

所 有 滑 鼠 軌 跡 轉 義 序 列 引 數 由 xterm 編 碼 成 象 value +040 這 樣 的 單 一 字 元 形 式 的 數 字 引 數 .比 如 ,‘!’ 編 碼 成 1.螢 幕 座 標 系 統 以 ’1’為 基 準 .

X10 相 容 模 式 在 滑 鼠 鍵 按 下 時 將 按 下 的 鍵 和 滑 鼠 位 置 編 碼 後 送 出 . ESC [ ? 9 h 允 許 這 一 動 作 ,ESC [ ? 9 l禁 止 這 一 動 作 . 有 鍵 按 下 時 , xterm 送 出 ESC [ M bxy (6 個 字 元 ).這 裡 b 代 表 鍵 -1,而 x y 是 滑 鼠 的 x 和 y 座 標 .這 和 核 心 產 生 的 序 列 相 同 .

常 規 的 軌 跡 模 式 (Linux 2.0.24不 再 支 援 )在 左 右 兩 鍵 同 時 按 下 然 後 釋 放 時 送 出 轉 義 序 列 .組 合 鍵 編 碼 也 被 送 出 .ESC [ ? 1000 h 允 許 這 個 動 作 而 ESC [ 1000 l 禁 止 這 個 動 作 .當 有 鍵 按 下 或 者 釋 放 時 , xterm 送 出 ESC [ M bxy . b 的 低 兩 位 對 按 鍵 資 訊 編 碼 : 0=滑 鼠 鍵 1按 下 ,1=滑 鼠 鍵 2 按 下 ,2=滑 鼠 鍵 3 按 下 ,3=釋 放 . 高 位 編 碼 代 表 組 合 鍵 ,和 上 述 編 碼 一 起 送 出 : 4=Shift,8=Meta(Alt),16=Control(Ctrl). x y 為 發 生 滑 鼠 事 件 的 x和 y座 標 .以 左 上 角 為 (1,1).

和 其 它 終 端 的 比 較

我 們 已 經 討 論 了 幾 種 終 端 型 別 ,比 如 Linux 控 制 檯 .這 類 終 端 稱 為 "VT100相 容 "的 終 端 .這 裡 我 們 再 介 紹 其 他 兩 種 重 要 的 終 端 型 別 : DEC VT102 和 xterm(1) 以 及 他 們 和 Linux控 制 終 端 的 區 別 .

Control-character handling 控 制 字 元 處 理

vt102 也 使 用 以 下 控 制 序 列 :

NUL(0x00)忽 略 ;

ENQ(0x05)觸 發 應 答 訊 息 ;

DC1(0x11,ˆQ,XON)繼 續 傳 送 ;

DC3(0x13,ˆS,XOFF)使 vt100 忽 略 (並 停 止 傳 送 ) 除 XOFF and XON 以 外 的 一 切 字 元 .

VT100-like DC1/DC3 程 序 可 以 由 tty 驅 動 啟 用 .

程 式 xterm

(在 vt100 模 式 中 )使 用 控 制 序 列 BEL,BS,HT,LF,VT,FF,CR,SO,SI,ESC.

Escape sequences 轉 義 序 列

VT100 控 制 檯 序 列 不 完 全 支 援 Linux控 制 檯 序 列 :

Image grohtml-689664-5.png

程 式 xterm (vt100 模 式 )承 認 ESC c,ESC # 8,ESC >,ESC =, ESC D,ESC E,ESC H,ESC M,ESC N,ESC O,ESC P ...ESC ESC Z(以 [ ? 1 ; 2 c,‘I am a vt100 with advanced video option’回 應 ) 以 及 ESC ˆ ...ESC 意 義 同 上 . 接 受 ESC(,ESC ),ESC *,ESC + 後 跟 0,A,B 的 字 元 序 列 ,分 別 代 表 的 DEC 特 殊 字 元 ,畫 線 設 定 ,UK 和 US ASCII碼 . 接 受 ESC ] 作 為 特 定 資 源 設 定 :

Image grohtml-689664-6.png

以 下 字 元 的 含 義 略 有 不 同 ::

Image grohtml-689664-7.png

它 還 接 受 以 下 序 列 :

Image grohtml-689664-8.png

它 不 識 別 ESC % ...

CSI Sequences CSI 序 列

程 式 xterm (直 到 XFree86 3.1.2G)不 能 識 別 閃 爍 或 者 不 可 見 模 式 的 SGR值 .X11R6 也 不 能 識 別 以 SGRs 為 引 數 設 定 的 色 彩 . xterm 可 以 識 別 其 他 的 ECMA-48 CSI 序 列 ,只 要 Linux可 以 識 別 . 反 之 亦 然 .

xterm 可 以 識 別 以 上 列 出 的 所 有 DEC 私 有 序 列 ,但 是 不 包 括 Linux 私 有 模 式 序 列 . 在 Xterm Control Sequences 中 有 關 於 xterm 的 私 有 模 式 序 列 的 討 論 .

document by Edward Moy and Stephen Gildea,available with the X distribution.

BUGS

在 版 本 為 2.0.23 的 核 心 中 ,CSI 序 列 的 識 別 有 些 問 題 : 不 能 識 別 轉 義 序 列 中 的 NUL.

參 見

console(4), console_ioctl(4), charsets(7)

本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。
中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh