Я пишу простое приложение Mac, предназначенное для работы в фоновом режиме и выполнения определенных действий всякий раз, когда пользователь нажимает кнопку мыши. Приложение написано на Python с использованием PyObjC. Я использую addGlobalMonitorForEventsMatchingMask
для просмотра событий NSLeftMouseDown
:
NSEvent.addGlobalMonitorForEventsMatchingMask_handler_(NSLeftMouseDownMask, handler)
Этот код отлично работает при работе в терминале. Однако, когда я связываю его как автономное приложение (используя py2app), а затем запускаю его, приложение сначала не получает никаких событий. (Или, по крайней мере, если это так, он не запускает код в моем методе обработчика.) Только когда я нажимаю на приложение в Dock, он начинает получать события, и после этого он продолжает получать события даже после него возвращается на задний план. Но он ничего не получает, пока не активируется один раз.
Мой вопрос: как я могу заставить свое приложение начать получать события сразу после его запуска, без необходимости сначала активировать его, щелкнув значок док-станции? Это какая-то известная причуда NSEvents
, или может быть что-то не так с моим циклом запуска в PyObjC?
Любая помощь или руководство приветствуются!
Изменить: при дальнейшем тестировании кажется, что на самом деле мое приложение самопроизвольно начинает получать уведомления через десять секунд после запуска, независимо от того, активирую ли я его. Это немного раздражает, но прекрасно.
Однако, если я запустил приложение с LSUIElement = true
или LSBackgroundOnly = true
в моем Info.plist
(что в конечном итоге я хочу сделать, так как это приложение должно работать только в фоновом режиме и никогда не появляться в Dock), я никогда не получать уведомления. Поэтому я все еще застрял.