Могу ли я использовать 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?

  • Поиск динамического символа не выполняется с помощью статически встроенного Python в Mac OS X
  • Доступ к альтернативным форматам буфера обмена из python
  • Возврат результата внешнего скрипта к VBA
  • Установите Python 3.1 в Mac OS X версии 10.5.8
  • Предупреждение. Инструменты командной строки для Xcode не отображаются, как установлено; большинство портов, вероятно, не смогут построить
  • Установка Pygame не выполняется из-за требований System Python 2.7, хотя у меня есть Python 2.7
  • Генерация предварительного просмотра миниатюр Python PDF
  • Запись в Python, работающая в Windows, но не в Mac OS
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.