2013-07-09 18 views
6

Sorum şu: bir anahtar aşağı doğru bir elma macunu/python ile bir mac üzerinde tutmak için bir yolu var mı?Mac Python, Mac için doğru bir anahtar aşağı olay göndermek için kullanılabilir

Bu gibi konular için hemen hemen her yerde arama yaptım, ancak bunların hiçbiri kesmiyor. Bir Arduino'dan seri bilgi okumak için Python'u kullanmaya çalışıyorum, daha sonra bu sinyalleri tuşa basma olarak iletiyorum. Aşağıdaki kodda gösterildiği gibi, sistem olay bir "anahtar aşağı" göndermek için applescript nasıl kullanılacağını gördük:

(Python code) 
    def SendDown(key): 
    string = str(key) 
    cmd = """osascript -e 'tell application "System Events" to key down (key code """ + string + ")'" 
    os.system(cmd) 

Bu kod genellikle, ancak, Google uçuş simülatörünü kontrol etmek istediğiniz çalışır. Bunu yapmaya çalıştığımda, önemli basımlar hızlı bir şekilde izlenebiliyor ve uçuş simülatörü ya da temel google earth haritasının beklediğim şeyin kesirlerini taşıyor. Bunlar aşağıdaki gibi bir yol Bu kodu kullanıyorum

temelde (suedocode) benim açımdan itibaren

if (ArduinoMessage == "left"): 
    SendDown(leftKey) #leftKey has been set to 123 -- the code for the left arrow key 
    etc... 

, ben yolluyorum anahtar aşağı olay aslında hızlı bir tuş ve tuş olmak değildir tutuldu. Anahtar olayı doğrudan elyazmasında programlamayı denedim ve biraz başarı elde ettim. Benim kod böyle bir şey görünüyordu: Bu kod ı elde edilmiştir daha google earth haritası daha taşındı

tell application "System Events" 
    repeat 50 times  
     key down (key code 123) 
    end repeat 
    key up (key code 123) 
end tell 

, ancak normal ok tuşlarıyla çok daha az bir miktar (kaydırsınlar uzun bir zaman aldı). Sonra o el yazısını Python'a yazmaya çalıştım ve tüm gelişmeleri kaybettim.

Bu yüzden soruyu yeniden çiziyorum - bir anahtar üzerinde bir el yazısıyla güvenilir bir şekilde el yazması için bir yol var mı?

Bunu Windows üzerinde oldukça kolay bir şekilde çalıştırabiliyordum, ancak bu tür uygulamalar için tasarlanan SendKeys adlı bir Windows kitaplığını kullanabiliyordum.

Herhangi bir yardım için teşekkür ederiz.

sayesinde

Jake

+0

Benim görüşüme göre büyük bir isim. –

cevap

2

kullanın PyUserInput. Aşağıdaki kodu deneyin.

import time 

import pykeyboard 


# TODO: Replace following two lines with the code that activate the application. 
print('Activate the application 3 seconds.') 
time.sleep(3) 

k = pykeyboard.PyKeyboard() 
k.press_key(k.left_key) 
time.sleep(1) # Hold down left key for 1 second. 
k.release_key(k.left_key) 

Maalesef Mac'im yok. Linux, Windows'da test ettim.

+1

İyi öneri falsetru, Mac üzerinde çalışmıyor. Anlaşılan pankart sadece Windows ve Linux. (Bkz. [Burada] (https://pypi.python.org/pypi/PyUserInput/0.1)) Ancak onlardan bir öneri alabildim - [autopy] (http://msanders.github.io/ Mac üzerinde çalışabilen autopy /). Yani önerin boşuna değil. Teşekkür ederim. – Jake

+1

Otopile bakıyordum ve pek çok kişi Mac'e yükleyemiyor, ayrıca xcode gerekli bir indirme işlemidir. Uygulamamın hızlı bir yükleme olmasını isterim - xcode neredeyse 2GB olduğundan bu çok kullanışlı görünmüyor. Umarım başka bir yöntem vardır. – Jake

+0

@Jake, PyMouse'ı kullanma (PyUserInput'ta bulunan). PyMouse kullanımı bazı hesaplamalar gerektirir, ancak uykuya gerek yoktur. – falsetru