Могу ли я использовать Python для захвата событий клавиатуры и мыши в OSX?

Я пытаюсь написать простой макрорекордер в Python для OSX – что-то, что может захватывать мыши и ключевые события, когда сценарий работает в фоновом режиме и воспроизводит их. Я могу использовать autopy для последнего, есть ли аналогичная простая библиотека для первого?

5 Solutions collect form web for “Могу ли я использовать Python для захвата событий клавиатуры и мыши в OSX?”

Сегодня я столкнулся с несколькими решениями этой проблемы, и решил, что я вернусь туда и поделюсь ими, чтобы другие могли сохранить время поиска.

Отличное кросс-платформенное решение для моделирования ввода клавиатуры и мыши: 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() 

Для ввода мыши просто замените NSKeyDownMask на соответствующую маску из списка, доступного здесь: http://developer.apple.com/library/mac/#documentation/cocoa/Reference/ApplicationKit/Classes/NSEvent_Class/Reference/Reference.html# // apple_ref / occ / clm / NSEvent / addGlobalMonitorForEventsMatchingMask: обработчик :

Например, NSMouseMovedMask работает для отслеживания движений мыши. Оттуда вы можете получить доступ к event.locationInWindow () или другим атрибутам.

Вот решение без использования curses :

http://docs.python.org/faq/library.html#how-do-i-get-a-single-keypress-at-a-time

Этот вопрос был задан некоторое время назад – Python кросс-платформенное прослушивание нажатий клавиш?

Вы можете найти пример кода, который будет полезен!

Я знаю, что вы можете использовать curses для захвата ввода ключа, но я не уверен в отношении ввода мыши. Не только это, но если я не ошибаюсь, он включается в библиотеку std с 2.7.2.

В Python на OSX, похоже, нет способа сделать это.

Кальвин Чэн, спасибо. ваше предложение работает на OS X 10.8.5.

Код от http://docs.python.org/faq/library.html#how-do-i-get-a-single-keypress-at-a-time

 #!/usr/bin/python import termios, fcntl, sys, os fd = sys.stdin.fileno() oldterm = termios.tcgetattr(fd) newattr = termios.tcgetattr(fd) newattr[3] = newattr[3] & ~termios.ICANON & ~termios.ECHO termios.tcsetattr(fd, termios.TCSANOW, newattr) oldflags = fcntl.fcntl(fd, fcntl.F_GETFL) fcntl.fcntl(fd, fcntl.F_SETFL, oldflags | os.O_NONBLOCK) try: while 1: try: c = sys.stdin.read(1) print "Got character", repr(c) except IOError: pass finally: termios.tcsetattr(fd, termios.TCSAFLUSH, oldterm) fcntl.fcntl(fd, fcntl.F_SETFL, oldflags) 

Еще одно решение Key Listeners в python?

  • Различия между Framework и не-Framework-сборками Python в Mac OS X
  • Установка pyside с python3 на os x
  • Импорт модуля запросов в python не работает в OS X
  • SciPy build / install Mac Osx
  • Во время установки Django, почему я продолжаю получать ImportError: Нет модуля с именем django?
  • Пример приложения python зависает при закрытии
  • Ограничение размера файла для read ()?
  • Получение дружественных имен устройств в python
  • python easy_install терпит неудачу с «ассемблером для архитектуры ppc не установлен» в Mac OS X
  • Как создать приложение osx / dmg из пакета python?
  • Python3 успешно установлен, но не может быть открыт в терминале
  • Python - лучший язык программирования в мире.