【问题标题】:Sending Arrow keys as a string through putty terminal to AIX 7.2通过腻子终端将箭头键作为字符串发送到 AIX 7.2
【发布时间】:2022-12-24 00:59:13
【问题描述】:

大家,

我有点麻烦了。

我通过 PuTTy SSH 连接到 AIX 7.2,我正在那里使用终端程序,我需要在其中移动光标以选择选项。

而且,当它可以自动完成时,我懒得手动完成。

通过将焦点设置在 PuTTy 窗口并发送密钥,我们在执行“正常方式”时遇到了问题,特别是因为如果速度太快,终端响应不佳并且发送的击键/文本丢失......如果等待太长了,要么会话中断。最后,即使焦点不断被重定向到窗口,也有失去焦点的风险。发生这种情况时,部分击键/文本也会丢失......

所以,我的主要问题是确保所有密钥都已发送。为此,我制作了一个 Windows 窗体,在其中详细说明了我想要的选项,然后调用了一个没有窗口的 plink.exe 进程。

我将 Process.STDO 重定向到我的表单,以便我获得有关流程进展情况的反馈,并且由于有时会丢失信息,我制作了某种信号量,以保证在我最终从 AIX 获得反馈时写信服务器和 Process.STDIN 我使用一个字符串数组,其中包含我要发送的文本和转义键。

我的问题,现在:

因为我不能使用 SendKeys 因为我没有窗口来设置焦点,所以我试图使用 ASCII 转义字符来发送“向下箭头”键。

到目前为止,我可以发送 '\n' 和普通文本,但是我不能发送用于上下移动和选择选项的箭头键,或者它们没有被正确解释。

我一直在做我的研究,我尝试发送 '\033[1B' (我尝试过的最后一个)来向下移动光标,我在 AIX 上使用 cat 命令,所以我可以看到按下键时会打印什么(并且什么都不打印 - 我猜是不可打印的字符 - )我什至下载了 AIX 7.2 手册,看看那里是否有有用的东西......

主要想法是,当我快要完成它时,将在字符串上获取“向下箭头”转义键值,这样我就可以通过 PuTTy 发送它,让它被识别并上下移动光标。

所以,欢迎任何想法......

【问题讨论】:

  • 我尝试了“\033[1B”、“\033[B”、“\E[1B”、“\E[B”、“\e[1B”、“\e[B”、“\016”(哪个实际上,当我使用 echo 时,会抛出一个不可打印的字符,但在发送时,不会将光标向下移动)
  • 尝试执行set -o emacs,然后执行带有菜单的程序。

标签: c# .net putty aix


【解决方案1】:

您应该查看在进程环境中设置 ESCDELAY。 它记录在here

【讨论】: