Escape-Characters

多字節轉義序列的最大長度是多少?

  • February 22, 2016
  • ESC發送\x1b. 那是1 字節:實際的轉義字元。
  • Page Up發送\x1b[H. 那是3 個字節
  • F2發送\x1b[OQ. 那是4 個字節
  • F5發送\x1b[15~. 那是5 個字節

其中之一的最大長度是多少?這是在某處記錄的嗎?

控制序列的長度沒有預定義的限制。OP 給出了一些由特殊鍵發送的字元串作為範例,這些字元串記錄在XTerm 控制序列中。

xterm 以可能的鍵程式碼列表開始,可以添加修飾符程式碼,如Alt 和 Meta 鍵部分所述。沒有長度表。這樣做的一個複雜因素是,有幾個資源設置可以協同工作以進行數千種可能的鍵盤排列。xterm 終端描述不是描述所有這些,而是呈現為一組 terminfo 建構塊(帶有“+”的名稱),包括使用者定義的修改鍵的功能(例如control,、shift等)。

  • xterm頁面的terminfo列出了那些(由腳本生成)。
  • 建構塊的大小受到限制,以適應大多數實現所假定的已編譯 terminfo 的 4096 字節限制。
  • ncurses終端數據庫列出了這些建構塊的子集。
  • 它還記錄了 xterm 條目使用的使用者定義功能,並指出可能的鍵比記錄的要多得多。

其他一些終端實現 xterm 方案,但僅適用於特定組合。所以這些會更容易列舉。它們在某種意義上是“預定義的”。

但是,特殊鍵並不是控制序列的唯一類型。這些使用 ECMA-48 格式的終端中的每一個都接受從主機發送的控制序列。一般來說,它們接受數字或字元串參數:

  • xterm 忽略大於 65535 的數字,因此您可以將其視為位數的限制(但取決於終端)。
  • 控制序列可以包括任意數量的數字參數。例如,xterm 接受一個控制序列,它改變 256 色調色板中的 256 種顏色中的每一種。那是幾千字節(可以估計為上限)。控制序列解析器在任何時候都不需要超過幾個數字。
  • 字元串參數(例如在視窗上設置標題)對其長度沒有預定義的限制。

同樣,其他終端仿真器可能會對它們接受的控制序列的長度使用它們自己的限制。

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