我正在mac上开发一个GLUT程序。 Mac似乎以有趣的方式通过GLUT传递修饰符。 glutGetModifiers()不会捕获Alt键和控制键,而是将它们转换为按钮int。 glutGetModifiers()或按钮int似乎没有捕获命令键。此外,它不会显示为我的glutKeyboardFunc(...)中的键。
有没有办法在GLUT中捕获/检测命令(apple)键?
答案 0 :(得分:2)
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( "⌘" ) ;
}
答案 1 :(得分:0)
虽然Carbon解决方案在某些情况下更好,但也可以在mac os x上直接修补和替换GLUT框架以支持命令键。 This patch捕获命令键并定义相应的修饰符掩码GLUT_ACTIVE_COMMAND
。