gpt4 book ai didi

linux - 如何检测 xterm resize in-band

转载 作者:太空宇宙 更新时间:2023-11-04 04:32:13 26 4
gpt4 key购买 nike

我正在寻找一种在 xterm 上获取调整大小事件的方法,作为绞盘信号的替代方案。我需要获得远程兼容的 xterm 大小调整信号,也就是说,可以通过串行线/telnet/ssh/其他方式使用。绞车信号仅适用于本地机器任务。

我知道 vi/curses 可以做到这一点,因为我尝试过 ssh 并使用 vi 编辑文件,并且它响应窗口大小的调整。

最佳答案

经过一番研究,似乎确实没有带内方法可以实现这一点。我认为添加并不困难。连接有两端,ssh、串行或其他方式,假设 A 和 B,其中 A 在主机上,B 在远程上。为了获得与本地窗口任务等效的行为,我认为至少有两件事是必不可少的:

  1. 鼠标移动/按钮消息传递。
  2. 窗口大小调整消息传递。

第二个过程可以分为两步。如果 B 任务收到窗口大小已更改的警报,它可以在带查询中使用来确定新的大小,使用(可能是臭名昭著的)方法将光标设置到大屏幕的末尾,然后读取结果产生的光标的实际位置,然后恢复该位置,所有这些都通过标准带内控件完成。

为什么要关心带内与带外?好吧,现在没人关心了:-),但是串行线路曾经非常流行,带内(即沿线路发送的实际转义序列)将起作用,但 telnet 或 ssh“带外”通信则不起作用。

不难添加,一个本地程序,通过 ssh 或 telnet 进行填充,甚至 xterm 本身,都可以获取绞盘消息并将其更改为向 B 端发出的逃逸警报。这里鼠标消息传递很有启发性。这些消息包含两个操作:

  1. B 端必须启用此类消息,以便 A 端不会向其发送未知转义符。
  2. A 面必须有一个转义符来表示绞盘。

因此,这是从 B 到 A 的新逃逸,以及从 A 到 B 的新逃逸。

我实际上对绞车相当满意。我们想要的是具有与 vi/curses 相同的功能(根据我的观察)。这种支持已经比 Windows 好得多了,Windows(据我所知)没有实现任何远程端支持。

关于linux - 如何检测 xterm resize in-band,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56010478/

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