Сегодня я наткнулся на несколько решений этой проблемы и подумал, что мне нужно вернуться назад и поделиться ими, чтобы другие могли сэкономить время поиска.
Изящное кроссплатформенное решение для имитации ввода с клавиатуры и мыши: http://www.autopy.org/
Я также нашел краткий, но работающий (как у Mountain Lion) пример того, как глобально регистрировать нажатия клавиш.Единственное предостережение в том, что вы должны использовать 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()
Для ввода с помощью мыши просто замените 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 () или другим атрибутам.