Python中是否有适用于Mac的sendKey函数?

20

在Mac 10.6中,我希望能够通过Python使一个活动应用程序变为非活动状态或最小化。

我知道在Windows上可以使用Python的sendKey方法,那么在Mac上该怎么办呢?


4
sendkeys是一个Windows API,用于以编程方式将按键发送到应用程序窗口。 - Fusspawn
5个回答

35

以下是我从 Stack Overflow 上另一个问题中找到的答案。对于我的问题,它运作得相当不错。

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

1
我正在寻找如何在Ruby中实现这个功能,同样的想法也可以使用... `puts \`osascript -e 'tell application "System Events" to keystroke "m" using {command down}'\``或者传入一个文件来执行额外的osascript脚本 `puts \`osascript example.as\`` - danmayer

8

试试appscript,这是一个在PyPI中提供的苹果事件桥接工具:

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

2
请注意,appscript不再得到开发或支持,并且不建议在新项目中使用。 - tester

6

除了将按键发送到当前活动的应用程序之外,您还可以将其发送到特定的应用程序。如下所示传递以下内容给osascript,或将其保存到文件中并将文件传递给osascript。

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

这将在将Safari调至前台后发送Cmd + r命令。

0
为了让我在Windows上使用SendKeyspip编写的脚本也能在OS X上工作,我创建了一个文件/Library/Python/2.7/site-packages/SendKeys/__init__.pysite-packagespip在我的Mac上安装所有内容的位置...不确定是否可配置。)
文件的内容如下:
def SendKeys(keys):
    if keys == '{ENTER}'
        keys = 'return'
    from os import system
    system('osascript -e \'tell application "System Events" to keystroke ' + keys + "'")

显然这并不是非常稳健的,所以我不会将它放在pypi上,但它足以让我的脚本在OS X和Windows上运行。


0
也许你可以从Python中运行一个OSA脚本(man osascript),然后驱动应用程序?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接