gpt4 book ai didi

terminal - 如何确定 ANSI 终端的大小?

转载 作者:行者123 更新时间:2023-12-04 14:10:34 27 4
gpt4 key购买 nike

标准输入和输出连接到一个终端,该终端实现了 ANSI 转义序列,但维度未知。

我需要知道终端有多大,以便于在其上绘制全屏文本 UI。我怎样才能得到尺寸?

正确的大小未加载到环境变量中。我不能使用 TIOCGETS;调用将返回成功但值不正确——内核也不知道大小。

搜索 stackoverflow 的答案有很多很多,但它们都取决于操作系统以一种或另一种方式提供答案;但这一次不是真的。

我能找到的最好的线索是返回当前光标位置的 DSR 命令;但没有移动到底部/右侧命令。

最佳答案

resize 程序通过将光标移动到一个非常大的列和行来做到这一点;终端尽可能地移动,例如,

CUP 999 999

然后 resize询问光标在哪里:
DSR 6

终端回复实际光标位置(即光标位置报告 CPR ),其中 resize知道终端的大小:光标在右下角。

这一切都是使用标准 ( ECMA-48/VT100) 转义序列完成的。在 XTerm Control Sequences (这应该适用于您的“ANSI”终端)
CSI Ps n  Device Status Report (DSR).
Ps = 6 -> Report Cursor Position (CPR) [row;column].
Result is CSI r ; c R

关于terminal - 如何确定 ANSI 终端的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35688348/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com