【问题标题】:Python vncdotool send special charactersPython vncdotool 发送特殊字符
【发布时间】:2016-03-05 04:25:11
【问题描述】:

我正在使用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)

【问题讨论】:

    标签: python vps vnc


    【解决方案1】:

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

    client = api.connect()
    client.factory.force_caps = True
    

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

    【讨论】:

    • 好的,这样就行了!谢谢!现在有另一个问题......有时当我发送命令时,它会发送所有大写字母,当然这些命令不适用于大写字母......知道为什么吗?
    • 我的猜测是服务器缺少 shift-release。一个可能的原因是服务器密钥缓冲区太小。如果是这样,将 --delay=1000 添加到命令行或将 client.pause(1000) 放在命令之间可能会有所帮助。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-06-05
      • 1970-01-01
      • 2023-03-10
      • 2019-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      相关资源
      最近更新 更多