Python vncdotool 发送特殊字符

Python vncdotool send special characters

我正在使用 vncdotool。当我测试下面的代码时, : 变成了 ; ,我无法弄清楚为什么会这样。此外,当我尝试发送 ~ 时,它会改为发送 `。任何帮助,将不胜感激。谢谢。

import vncdotool
from vncdotool import api

def sendKeys(client, keys):
  for k in keys:
    client.keyPress(k)

hostport = 'XXX.XXX.XXX.XXX::XXXX'
password = 'XXXXXXXXX'

client = api.connect(hostport, password)

command = 'add-apt-repository ppa:nilarimogard/webupd8'
sendKeys(client, command)

command = 'cd ~/myfolder/'
sendKeys(client, command)

我明白了。我不得不使用 shift 来发送这些字符。希望这对某人有所帮助。

def sendSpecialKeys(client, keys):
  client.keyDown('shift')
  sendKeys(client, keys)
  client.keyUp('shift')

特殊字符一直是 vncdotool 中的一个持续问题。快速而肮脏的解决方案是使用 --force-caps。交换机发送 <shift>-char 而不是普通的 char。从 API 你可以做类似于

的事情
client = api.connect()
client.factory.force_caps = True

这并不理想,但如果不深入调查为什么某些服务器没有按预期处理特殊字符,似乎就可以完成工作。