作者[系統]
看板PttCurrent
標題[開發資訊] 新指令: VT100 DECSTBM
時間Tue Sep 29 23:25:00 CST 2026
PTT 終端機通訊協定注意事項
新指令即將上線,請 App 開發者及早測試 & 更新。
指令: VT100 DECSTBM
*[<top>;<bottom>r (設定捲動範圍 / Set Top and Bottom Margins)
*[r (重設捲動範圍為全螢幕 / Reset Margins)
* = ESC
預期行為: App/Client 依指令限制垂直捲動範圍,或直接忽略此指令。
指令方向: 單向 (Server -> Client,Client 不需要也不應回傳任何內容)。
上線時間: PTT1 - 10/04
PTT2 - 09/29
說明: 這是 VT100 標準的 DECSTBM (DEC Set Top and Bottom Margins)。
當 Client 端的連線終端機列數超過站台支援上限(例如超過 MAX_TERM_ROWS
150 行)時,PTT 會發送 *[1;150r 將畫面捲動區域限制在有效範圍內,
以避免過大視窗造成畫面捲動異常或越界破版;當視窗恢復或離線時會發送
*[r 重設捲動範圍。
若 Client 端不打算實作此指令可直接忽略,但請確認解析時不要當掉,另外
忽略後捲動的處理可能會有所異常,因為 PTT 目前的捲動處理方式是「跳到
最後一行再送出換行字元」。
給開發者的建議:
此指令多數現代終端機模擬器(xterm, PuTTY 等)均已原生支援。
自製 BBS App / Web Client 若有支援不同的視窗大小 (Resize) 建議實作此指令,
以正確處理邊界與捲動範圍。
若 Client 採用固定 24 列顯示或由客戶端自行裁切畫面,可直接忽略此指令,
但請確認解析器能正確略過 *[...r 序列,不要將參數當成字元印在畫面上。
另請注意標準 VT100 規格中,DECSTBM 執行後游標會回到 Home (1, 1) 位置。
PTT 站目前設定是輸出 DECSTBM 後會馬上送出指令把游標復位,但如果想與
其它站台相容請考慮正確實作。
--
※ 發信站: 批踢踢實業坊(ptt.cc)