macos – 如何在mac上运行的过剩程序中检测命令键作为修饰符?

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

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

最佳答案
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( "⌘" ) ;
}
点赞