Как определить командный ключ как модификатор в перенасыщенной программе, работающей на Mac? - PullRequest
4 голосов
/ 03 сентября 2010

Я разрабатываю программу GLUT на Mac. Mac, кажется, забавно передают модификаторы через GLUT. Клавиши Alt и Control не захватываются glutGetModifiers (), а переводятся в кнопку int. Кажется, что командная клавиша не захвачена ни glutGetModifiers (), ни кнопкой int. Кроме того, он не отображается как ключ в моем glutKeyboardFunc (...).

Есть ли способ захватить / обнаружить командную (яблочную) клавишу в GLUT?

Ответы [ 2 ]

2 голосов
/ 06 августа 2013

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( "⌘" ) ;
}
0 голосов
/ 24 октября 2013

Хотя решение Carbon в некоторых случаях лучше, можно также напрямую исправить и заменить среду GLUT на Mac OS X для поддержки клавиши управления. Этот патч перехватывает командную клавишу и определяет соответствующую маску модификатора GLUT_ACTIVE_COMMAND.

...