C'è una sendKey per Mac in Python?
Domanda
In Mac 10.6, voglio causare un'applicazione attiva per diventare de-attiva, o minimizzato da Python
So che potrei usare sendKey in Windows con Python, allora che dire in Mac?
Soluzione
Ecco quello che ho trovato da una domanda diversa su Stack Overflow. Funziona abbastanza bene per il mio problema.
import os
cmd = """
osascript -e 'tell application "System Events" to keystroke "m" using {command down}'
"""
# minimize active window
os.system(cmd)
Altri suggerimenti
appscript , un ponte di evento Apple disponibile in PyPI:
from appscript import app, k
app('System Events').keystroke('N', using=k.command_down)
Oltre a Yinan, che invierà la sequenza di tasti per l'applicazione attualmente attiva, è possibile inviarlo a una specifica applicazione come segue. Passare il seguente per osascript come prima, o salvarlo in un file e passare il file al osascript
tell application "Safari"
activate
tell application "System Events" to keystroke "r" using {command down}
end tell
Questo invierà Cmd + r per Safari dopo aver portato in primo piano
Forse si potrebbe eseguire uno script OSA (uomo osascript) da Python, per esempio, e guidare l'applicazione?
Per rendere i miei script, che già lavorano su Windows utilizzando SendKeys
da pip
lavorare anche su OS X, ho fatto un file /Library/Python/2.7/site-packages/SendKeys/__init__.py
(site-packages
è dove pip
mette tutto si installa sul mio Mac ... non so se questo è configurabile o meno. )
Il contenuto del file sono:
def SendKeys(keys):
if keys == '{ENTER}'
keys = 'return'
from os import system
system('osascript -e \'tell application "System Events" to keystroke ' + keys + "'")
Ovviamente non è molto robusto, quindi non sarà messa sul pypi
, ma è sufficiente a rendere i miei script eseguiti sia su OS X e Windows.