【问题标题】:Mouse/Keyboard input in OSX without Cocoa没有 Cocoa 的 OSX 中的鼠标/键盘输入
【发布时间】:2011-07-20 20:23:53
【问题描述】:

我正在使用 CGL/OpenGL 用 C++ 编写应用程序,并且需要键盘/鼠标输入。如果可能,我试图避免使用 Objective-C 和 Cocoa。我知道可以使用 Carbon 捕获输入,但似乎 Carbon 正在慢慢被淘汰,而且尚不清楚它是否能很好地与 64 位应用程序配合使用。有人知道 OSX 中是否有其他替代方法可以使用 C++ 进行鼠标/键盘输入,而无需使用非常低级别的东西(例如 I/O 套件)?任何代码 sn-ps 让我开始?

谢谢你-

【问题讨论】:

  • 你用什么来开窗?它不提供输入吗?
  • 我正在使用 CGL,它提供全屏 OpenGL 表面,但没有事件循环或输入。我希望能够运行自定义事件循环。
  • 从长远来看,GLUT 会帮助你吗?我在原型代码中用它来处理键盘/鼠标。
  • 我以前也使用过 GLUT,但我希望有一种方法可以处理我自己的事件循环。据我所知,GLUT 仅使用自己的事件循环处理事件。

标签: c++ macos mouseevent keyboard-events


【解决方案1】:

Quartz event taps 可能会做你想做的事。在不知道为什么要避免使用 Cocoa 事件系统的情况下,很难知道哪种技术最适合您尝试做的事情。

【讨论】:

  • 谢谢 - 我会调查的。我并不是想避免 Cocoa 本身 .. 我不能使用的是 Objective-C .. 看,我有一些我想使用的 C++ 代码,虽然 Objective-C++ 大部分都可以工作,但它不喜欢虚函数(我由于 C++ 代码的结构方式,需要使用)。所以任何使用 64 位的 C 或 C++ API 都应该这样做。
  • 你有什么不起作用的具体例子吗?我曾在几个大型 Objective-C++ 代码库中工作过,并且从未遇到过虚拟函数的任何问题。
【解决方案2】:

Gaffer on Games 写了一篇文章做你想做的事,使用 CGL 和最小事件循环创建上下文和表面(虽然有点过时,但对于 El Capitan,你需要 CGLSetFullScreenOnDisplay())

http://gafferongames.com/2009/01/19/opengl-on-macosx/

它使用 InstallApplicationEventHandler,这里提到的两个键盘 API 之一:

Keyboard input on OSX

【讨论】:

    猜你喜欢
    • 2011-12-09
    • 2011-06-16
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 2021-07-01
    相关资源
    最近更新 更多