如何在 Mac 上运行的 glut 程序中检测命令键作为修饰符?

发布于 2024-09-18 08:22:09 字数 218 浏览 1 评论 0原文

我正在 Mac 上开发一个 GLUT 程序。 Mac 似乎以一种有趣的方式通过 GLUT 传递修饰符。 Alt 和控制键不会被 glutGetModifiers() 捕获,而是被转换为按钮 int。命令键似乎没有被 glutGetModifiers() 或按钮 int 捕获。另外,它不会在我的 glutKeyboardFunc(...) 中显示为键。

有没有办法捕获/检测 GLUT 中的命令(苹果)键?

I am developing a GLUT program on a mac. Mac's seem to pass modifiers through GLUT in a funny way. Alt and control keys are not captured by glutGetModifiers() instead they're translated into the button int. The command key doesn't seem to be captured by either glutGetModifiers() or the button int. Also, it doesn't show up as a key in my glutKeyboardFunc(...).

Is there any way to capture/detect the command (apple) key in GLUT?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甲如呢乙后呢 2024-09-25 08:22:09

glutGetModifiers 仅检测 CTRL、ALT 和 SHIFT,而不检测 键。

我知道如何做到这一点的唯一方法是使用 Carbon

#include <Carbon/Carbon.h>

KeyMap keyStates ;
bool IS_KEYDOWN( uint16_t vKey )
{
  uint8_t index = vKey / 32 ;
  uint8_t shift = vKey % 32 ;
  return keyStates[index].bigEndianValue & (1 << shift) ;
}

void checkInput()
{
  // This grabs all key states, then checks if you were holding down ⌘ or not
  GetKeys(keyStates) ;
  if( IS_KEYDOWN( kVK_Command ) )
    puts( "⌘" ) ;
}

glutGetModifiers only detects CTRL, ALT and SHIFT, not the key.

The only way I know how to do this is to use Carbon,

#include <Carbon/Carbon.h>

KeyMap keyStates ;
bool IS_KEYDOWN( uint16_t vKey )
{
  uint8_t index = vKey / 32 ;
  uint8_t shift = vKey % 32 ;
  return keyStates[index].bigEndianValue & (1 << shift) ;
}

void checkInput()
{
  // This grabs all key states, then checks if you were holding down ⌘ or not
  GetKeys(keyStates) ;
  if( IS_KEYDOWN( kVK_Command ) )
    puts( "⌘" ) ;
}
恏ㄋ傷疤忘ㄋ疼 2024-09-25 08:22:09

虽然Carbon解决方案在某些情况下更好,但也可以直接修补和替换mac os x上的GLUT框架以支持command键。 此补丁捕获命令键并定义相应的修饰符掩码GLUT_ACTIVE_COMMAND.

While the Carbon solution is better in some cases, one may also directly patch and replace the GLUT framework on mac os x to support the command key. This patch catches the command key and defines a respective modifier mask GLUT_ACTIVE_COMMAND.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文