作者[系统]
看板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)