我可以使用Python在OSX中捕获键盘和鼠标事件吗?

And*_*rov 10 python macos keyboard-hook

我正在尝试在Python中为OSX编写一个简单的宏录制器 - 当脚本在后台运行并重放它们时,它可以捕获鼠标和键事件.我可以为后者使用autopy,前者有一个类似的简单库吗?

syn*_*tel 6

今天我遇到了一些针对这个问题的解决方案,并认为我会回过头来分享这里,以便其他人可以节省搜索时间.

一个非常棒的跨平台解决方案,用于模拟键盘和鼠标输入:http://www.autopy.org/

我还发现了一个简短但有效的(山狮之谜)如何全局记录击键的例子.唯一需要注意的是你必须使用Python2.6,因为2.7似乎没有可用的objc模块.

#!/usr/bin/python2.6

"""PyObjC keylogger for Python
by  ljos https://github.com/ljos
"""

from Cocoa import *
import time
from Foundation import *
from PyObjCTools import AppHelper

class AppDelegate(NSObject):
    def applicationDidFinishLaunching_(self, aNotification):
        NSEvent.addGlobalMonitorForEventsMatchingMask_handler_(NSKeyDownMask, handler)

def handler(event):
    NSLog(u"%@", event)

def main():
    app = NSApplication.sharedApplication()
    delegate = AppDelegate.alloc().init()
    NSApp().setDelegate_(delegate)
    AppHelper.runEventLoop()

if __name__ == '__main__':
   main()
Run Code Online (Sandbox Code Playgroud)

对于鼠标输入,只需NSKeyDownMask使用此处可用列表中的相关掩码替换:http://developer.apple.com/library/mac/#documentation/cocoa/Reference/ApplicationKit/Classes/NSEvent_Class/Reference/Reference.html#//apple_ref/occ/clm/NSEvent/addGlobalMonitorForEventsMatchingMask:handler:

例如,NSMouseMovedMask用于跟踪鼠标移动.从那里,您可以访问event.locationInWindow()或其他属性.


And*_*rov -1

OSX 上的 Python 似乎没有办法做到这一点。