2016-03-05 181 views
0

我正在使用vncdotool。当我测试下面的代码时,变成;,我无法弄清楚它为什么这样做。另外,当我尝试发送时,它会发送`。任何帮助,将不胜感激。谢谢。Python 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) 

回答

1

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

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

东西,这不是理想的,但没有一个更深层次的调查,为什么有些服务器不处理按预期的特殊字符,它似乎把工作做好。

+0

好吧,这样的作品!谢谢!现在有另一个问题...有时当我发送命令,它发送全部大写,当然这些命令不能与CAPS ...任何想法,为什么? – antfuentes87

+0

我的猜测是服务器缺少shift-release。一个可能的原因是因为服务器密钥缓冲区太小。如果是这样,在命令行中添加''--delay = 1000'''或在命令之间放置client.pause(1000)可能会有所帮助。 – Marc

0

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

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