2016-03-05 4 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, и, конечно, команды не работают с CAPS ... любая идея почему? – antfuentes87

+0

Я предполагаю, что на сервере отсутствует сдвиг-релиз. Одна из возможных причин заключается в том, что буфер ключей серверов слишком мал. Если добавление '' '--delay = 1000''' в командную строку или выполнение команды client.pause (1000) между командами может помочь. – Marc

0

Я понял. Мне пришлось использовать shift для отправки этих символов. Надеюсь, это поможет кому-то.

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