我应该用什么来控制输入设备等等

时间:2010-08-14 22:38:04

标签: objective-c cocoa macos user-interface input

我精通C ++,Java和Python,并且在给予足够时间的情况下几乎可以获得任何其他技能(毫不奇怪,我确信99.9%的人阅读此内容具有相同的能力)。

我对Mac OS X的小应用程序有一个想法,我想知道我应该采用什么技术/学习如何使它运行起来。我需要一些最小的OS X集成才能正确完成。

我认为我应该在Cocoa中使用Objective-C,但如果可以使用某些Java库来完成,我宁愿这样做。

我的Mac OS X应用程序将执行以下操作:

  • 无论活动(聚焦)应用程序如何,都能拦截所有键盘和鼠标输入,并选择阻止它(有效禁用输入)或接收某些键盘快捷键。
  • 有一个Mac OS X菜单栏项(位于电池,网络适配器等旁边的屏幕右上角)
  • 有时可以占据整个屏幕(使用一些OpenGL画布来显示动画,就像屏幕保护程序一样)
  • 有声音。

您会推荐哪些技术?

3 个答案:

答案 0 :(得分:4)

  

我的Mac OS X应用程序将执行以下操作:

     
      
  • 无论活动(聚焦)应用程序如何,都能拦截所有键盘和鼠标输入,并选择阻止它(有效禁用输入)或接收某些键盘快捷键。
  •   

CGEventTap

  

拥有Mac OS X菜单栏项目(位于电池,网络适配器等旁边的屏幕右上角)

NSStatusItem

  

能够有时占据整个屏幕(使用一些OpenGL画布来显示动画,就像屏幕保护程序一样)

任何NSView都可以do this,但对于OpenGL,您需要具体NSOpenGLView

除了通常的全屏方法之外,您可能更愿意将视图放在window the screen-saver level处。尝试两种方式,看看哪种方式最适合你。

  

有声音。

NSSound

答案 1 :(得分:2)

如果您精通基于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

我不确定要推荐哪一个,我可以说cocoa可能会对您可能需要的任何集成提供最好的支持。

答案 2 :(得分:1)

这开头是一个评论,但是太大了。

我认为你可以用Java完成大部分工作 - 例如,菜单图标可以通过SystemTray API完成,它将它们放在Windows或OS X上的相关位置。之前的具体答案是:{{3 }}

关键问题是Java是否具有从操作系统中获取“原始”事件的API,或者仅在关注应用程序时才使用。例如,标准KeyListener链接到具有焦点的组件。

但是,考虑到应用程序的性质,我建议使用Cocoa。这也允许您使用Core Animation(比Quartz / OpenGL更高级别的抽象)。