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

问题描述 投票:3回答:3

我正在使用python 2.7和带有[[paramiko库的ssh客户端代码,我使用myhost.channel.send(chr(keycode))将每个键码发送到服务器。但是它仅适用于1字节的键码。我想发送其他多字节键码,例如箭头键。我该如何实现?请帮助我。

python ssh paramiko arrow-keys
3个回答
3
投票
[类似Windows或MacOS的GUI用'keycodes'标识密钥,但是SSH管道仅传输字节,而不是密钥码。

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

例如,Xterm控制序列文档说,箭头键是“ CSI A”代表向上,“ CSI B”代表向下,“ CSI C”代表右,“ CSI D”代表左。在Python中,它看起来像:

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


0
投票
在macOS 10.13.2中,您可以使用:

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

(我从sys.stdin中读取了它们)

-1
投票
我认为您可以在python中执行以下操作:

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

0x1B是VT100终端的ASCII转义字符。
© www.soinside.com 2019 - 2024. All rights reserved.