2009-11-20 19 views
17

Trong máy Mac 10.6, tôi muốn làm cho một ứng dụng đang hoạt động trở nên không hoạt động hoặc giảm thiểu bằng PythonCó một sendKey cho Mac bằng Python không?

Tôi biết tôi có thể sử dụng sendKey trong Windows bằng Python, vậy còn Mac thì sao?

+2

"Gửi khóa" là gì? –

+4

sendkeys là một cửa sổ api để gửi một bấm phím đến một cửa sổ ứng dụng progmatically. – Fusspawn

Trả lời

25

Dưới đây là những gì tôi tìm thấy từ một câu hỏi khác trên Stack Overflow. Nó hoạt động khá tốt cho vấn đề của tôi.

import os 
cmd = """ 
osascript -e 'tell application "System Events" to keystroke "m" using {command down}' 
""" 
# minimize active window 
os.system(cmd) 
+1

Tôi đang tìm cách để làm điều này trong Ruby và ý tưởng tương tự cũng có thể được sử dụng ... 'puts \' osascript -e 'cho ứng dụng "Sự kiện hệ thống" vào tổ hợp phím "m" bằng cách sử dụng {command down}' \ '' hoặc chuyển vào một tệp để thực hiện thêm osascripting 'đặt \ 'osascript example.as \' ' – danmayer

0

Có thể bạn có thể chạy tập lệnh OSA (man osascript) từ Python, ví dụ và thúc đẩy ứng dụng?

4

Ngoài Yinan, sẽ gửi phím tắt cho ứng dụng hiện đang hoạt động, bạn có thể gửi nó đến một ứng dụng cụ thể như sau. Vượt qua sau để osascript như trước, hoặc lưu nó vào một tập tin và vượt qua các tập tin để osascript

tell application "Safari" 
    activate 
    tell application "System Events" to keystroke "r" using {command down} 
end tell 

này sẽ gửi Cmd + r Safari sau khi đưa nó vào foreground

7

Hãy thử appscript, Apple kiện cầu có sẵn trong PyPI:

from appscript import app, k 
app('System Events').keystroke('N', using=k.command_down) 
+0

Xin lưu ý rằng appscript không còn được phát triển hoặc hỗ trợ và việc sử dụng nó không được khuyến khích cho các dự án mới. – tester

1

Để thực hiện kịch bản của tôi mà đã làm việc trên Windows sử dụng SendKeys từ pip cũng làm việc trên OS X, tôi đã thực hiện một tập tin /Library/Python/2.7/site-packages/SendKeys/__init__.py (site-packages là nơi pip đặt tất cả mọi thứ nó cài đặt trên máy Mac của tôi ... không chắc chắn nếu đó là cấu hình hay không.)

Nội dung của tập tin là:

def SendKeys(keys): 
    if keys == '{ENTER}' 
     keys = 'return' 
    from os import system 
    system('osascript -e \'tell application "System Events" to keystroke ' + keys + "'") 

Rõ ràng nó không phải là rất mạnh mẽ, vì vậy Tôi sẽ không đặt nó trên pypi, nhưng nó đủ để làm cho các tập lệnh của tôi chạy trên cả OS X và Windows.

Các vấn đề liên quan