Todavía me pregunto por qué no puede usar NSEvent
, pero de todos modos voy a responder la pregunta. Tal vez estás construyendo una "herramienta de línea de comandos" y solo están vinculados con Foundation. Tendrás que incluir al menos un marco más. Si desea establecer un vínculo con AppKit, puede (como mencioné en los comentarios) usar +[NSEvent modifierFlags]
; este es un método de clase en NSEvent
, por lo que puede usarlo en cualquier lugar, sin necesidad de tener acceso a un evento individual, para obtener el estado actual de las teclas modificadoras como una máscara de bits. Los documentos explican el meaning of the bitmask.
if(NSCommandKeyMask & [NSEvent modifierFlags]){
NSLog(@"Oh, yeah!");
}
También puede obtener esta información usando Quartz Event Services. En este caso, debe incluir el marco ApplicationServices *. El CGEventSource functions le dará la same bitmask que se obtiene de NSEvent
:
CGEventFlags theFlags;
theFlags = CGEventSourceFlagsState(kCGEventSourceStateHIDSystemState);
if(kCGEventFlagMaskCommand & theFlags){
NSLog(@"Uh huh!");
}
* Esto ya está incluido si usted es, de hecho, escribir una aplicación Cocoa - es parte de cuarzo.
Um. ** ¿Por qué ** no puedes referirte a NSEvent? – walkytalky
La respuesta a esta pregunta a partir de hoy debería ser útil: http://stackoverflow.com/questions/5994656/how-to-tell-if-a-modifier-key-is-down-during-drop-on-dock –
@Josh que usa un evento. –