如何使用python中的paramiko库发送箭头键?

如何使用python中的paramiko库发送箭头键?,python,ssh,paramiko,arrow-keys,Python,Ssh,Paramiko,Arrow Keys,我使用Python2.7和带有paramiko库的ssh客户端代码,我使用myhost.channel.send(chr(keycode))将每个keycode发送到服务器。但它只适用于1字节的键码。我想发送其他多字节键码,如箭头键。我怎样才能做到这一点?请帮帮我。像Windows或MacOS这样的GUI用“keycodes”标识密钥,但SSH管道只传输字节,而不是密钥码 假设服务器上ssh内部运行的程序是交互式的(也就是说,它期望有人使用它),那么您需要了解它期望接收什么类型的字节模式。打开频

我使用Python2.7和带有paramiko库的ssh客户端代码,我使用
myhost.channel.send(chr(keycode))
将每个keycode发送到服务器。但它只适用于1字节的键码。我想发送其他多字节键码,如箭头键。我怎样才能做到这一点?请帮帮我。

像Windows或MacOS这样的GUI用“keycodes”标识密钥,但SSH管道只传输字节,而不是密钥码

假设服务器上ssh内部运行的程序是交互式的(也就是说,它期望有人使用它),那么您需要了解它期望接收什么类型的字节模式。打开频道时,请确保正在调用
.get_pty()
,并为其提供一个终端参数(默认值为
vt100
,非常安全)。然后,您需要阅读VT100终端的文档,以了解当按下各种键时它发送的字节序列。我建议阅读文档(Xterm并非严格意义上的vt100仿真器,但它的文档非常完整),不要与原始vt100终端的硬件细节混淆)。请注意,在该文档中,“CSI”实际上是指Python字符串
'\e['

例如,Xterm Control Sequences文档指出箭头键是“CSI A”表示向上,“CSI B”表示向下,“CSI C”表示右侧,“CSI D”表示左侧。在Python中,这看起来像:

up = '\e[A'
down = '\e[B'
right = '\e[C'
left = '\e[D'

我认为在python中,您可以执行以下操作:

channel.sendall(chr(0x1b)+"[B")

0x1B是VT100终端的ASCII转义字符。

在macOS 10.13.2中,您可以使用:

class Keyboard:
    up = '\x1b[A'
    down = '\x1b[B'
    right = '\x1b[C'
    left = '\x1b[D'

(我从
sys.stdin
上读到了它们)

你能评论一下类似的问题吗:。非常感谢。