Что я должен использовать для управления устройствами ввода и многое другое - PullRequest
4 голосов
/ 15 августа 2010

Я свободно говорю на C ++, Java и Python и могу в достаточной степени освоить любой другой навык, если у меня есть достаточно времени (нет ничего удивительного, я уверен, что 99,9% людей, читающих эту способность, имеют такую ​​же способность).

У меня есть идея для небольшого приложения для Mac OS X, и мне было интересно, какую технологию я должен использовать / изучить, чтобы она работала. Мне нужна минимальная интеграция с OS X, чтобы сделать это правильно.

Я думаю, мне, вероятно, следует использовать target-C с Cocoa, но если бы это можно было сделать с какой-нибудь библиотекой Java, я бы предпочел это.

Приложение Mac OS X будет выполнять следующие действия:

  • Уметь перехватывать все вводы с клавиатуры и мыши независимо от активного (сфокусированного) приложения и выбирать либо блокировать его (эффективно отключая ввод), либо действовать при получении определенных сочетаний клавиш.
  • Элемент строки меню Mac OS X (в правом верхнем углу экрана рядом с батареей, сетевым адаптером и т. Д.)
  • Может занимать весь экран время от времени (с некоторыми холстами OpenGL для отображения анимации, так же, как это делает заставка)
  • Есть звук.

Какие технологии вы бы порекомендовали?

Ответы [ 3 ]

4 голосов
/ 15 августа 2010

Мое приложение Mac OS X будет выполнять следующие действия:

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

CGEventTap .

Есть пункт меню в Mac OS X (вв правом верхнем углу экрана рядом с аккумулятором, сетевым адаптером и т. д.)

NSStatusItem .

Возможность занимать весь экранвремя от времени (с некоторым OpenGL-холстом для отображения анимации, очень похоже на экранную заставку)

Любой NSView может сделать это , но для OpenGL выВам понадобится NSOpenGLView , в частности.

В качестве альтернативы обычному полноэкранному методу, вы можете предпочесть поместить представление в окне на экране.Уровень заставки .Попробуйте оба способа и посмотрите, какой из них лучше для вас.

Имейте звук.

NSSound .

2 голосов
/ 15 августа 2010

Если вы хорошо разбираетесь в языках на основе C, Cocoa - отличное место для старта и, вероятно, будет самым простым для задач, которые вы описываете. Начните здесь для какао: http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CocoaFundamentals/Introduction/Introduction.html

Python также имеет отличную поддержку, вы можете посмотреть здесь модули, которые могут содержать то, что вам нужно: http://docs.python.org/library/mac.html

Если вы предпочитаете Java, я бы начал искать необходимую вам функциональность: http://developer.apple.com/mac/library/documentation/Java/Conceptual/Java14Development/05-CoreJavaAPIs/CoreJavaAPIs.html

Честно говоря, я не уверен, что рекомендовать, я могу просто сказать, что какао, вероятно, будет иметь лучшую поддержку для любой интеграции, которая вам может понадобиться.

1 голос
/ 15 августа 2010

Это началось как комментарий, но стало слишком большим.

Я думаю, что вы могли бы сделать большую часть этого с помощью Java - например, значки меню можно сделать через API-интерфейс SystemTray, который помещает их в соответствующее место в Windows или OS X. Предыдущий конкретный ответ на это: Значок в системном трее (меню «Дополнительно») в Mac OS с использованием Java

Ключевой вопрос заключается в том, есть ли в Java API-интерфейсы для извлечения «сырых» событий из ОС, или только когда основное внимание уделяется приложению. Например, стандартный KeyListener связан с компонентом с фокусом.

Однако, учитывая характер приложения, я бы предложил пойти с Какао. Это также позволит вам использовать Core Animation (абстракция более высокого уровня по сравнению с Quartz / OpenGL).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...