Serial-Port

如何知道 ANSI 控制程式碼的結尾?

  • February 14, 2021

我正在編寫串列終端的程式碼,我正在實現用於移動游標、清除螢幕等的 ANSI 轉義碼,我很好奇如何知道使用哪個,因為似乎沒有程式碼的明確停止點。

我使用https://www2.ccs.neu.edu/research/gpc/VonaUtils/vona/terminal/vtansi.htm作為參考

例如,如果我收到程式碼,我開始讀取字元,但如果我得到值 75=‘K’,那可能是ESC[K= Erase End of Line,或者 75 作為ESC[{COUNT=75}C移動游標 75 列等程式碼的計數正確的。如果我收到程式碼來擦除後面跟著列印的 A 的行怎麼辦?據我所知,該程式碼和游標 75 cols right 將收到完全相同的序列。

我可能遺漏了一些明顯的東西,但有人可以給我一個提示嗎?謝謝

對於“ANSI”(實際上ECMA-48),開始控制序列的字元確定最終字元集。它在開頭附近有文件**ECMA-48**(第 5.4 節特別相關,儘管您可能需要一個 ASCII 圖表來理解它的術語)。

控制序列中的參數 75將是字元7````5,而不是值恰好是75的字元。兩者之間沒有混淆。

您引用的連結是由不熟悉該標準的人撰寫的文件。ncurses 常見問題解答中提到瞭如何使用 VT100 獲得顏色?.

引用自:https://unix.stackexchange.com/questions/634470