Мне все еще интересно, почему вы не можете использовать NSEvent
, но я все равно отвечу на вопрос.Возможно, вы создаете «инструмент командной строки» и связаны только с Foundation?Вам нужно будет включить хотя бы еще один фреймворк.Если вы хотите создать ссылку на AppKit, вы можете (как я уже упоминал в комментариях) использовать +[NSEvent modifierFlags]
;это метод класса NSEvent
, так что вы можете использовать его где угодно, без необходимости иметь доступ к отдельному событию, чтобы получить текущее состояние клавиш-модификаторов в виде битовой маски.Документы объясняют значение битовой маски .
if( NSCommandKeyMask & [NSEvent modifierFlags] ){
NSLog(@"Oh, yeah!");
}
Вы также можете получить эту информацию, используя Quartz Event Services .В этом случае вы должны включить платформу ApplicationServices *.Функции CGEventSource предоставят вам такую же битовую маску , которую вы получите от NSEvent
:
CGEventFlags theFlags;
theFlags = CGEventSourceFlagsState(kCGEventSourceStateHIDSystemState);
if( kCGEventFlagMaskCommand & theFlags ){
NSLog(@"Uh huh!");
}
* Это уже включено, если вы, вНа самом деле, написание приложения Какао - это часть Quartz.