2016-03-05 191 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')