2013-08-29 1 views
1

addGlobalMonitorForEventsMatchingMask를 사용하여 키가 눌려 있는지 확인할 수 있습니다. 그리고 이벤트가 시작되면 수정 자 플래그를 검사하여 수정자를 함께 사용했는지 확인할 수 있습니다.수정 자 키 누르기를위한 코코아 글로벌 시계

하지만 다른 키를 누르지 않고 수정자가 눌려 졌는지 알아야합니다.

어떻게하면됩니까?

+0

당신은 addGlobalMonitorForEventsMatchingMask'에'NSFlagsChangedMask'을 전달하려고 했'? – JWWalker

답변

0

당신은 유형 kCGEventFlagsChanged의 이벤트를 찾고 : 핸들러를 :

CGEventMask eventMask = (1 << kCGEventFlagsChanged); 
CFMachPortRef eventTap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault, eventMask, cgEventCallback, NULL); 

... 


CGEventRef cgEventCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef cgEvent, void *refcon) 
{ 
    NSEvent *event = [NSEvent eventWithCGEvent:cgEvent]; 
    if (event.type == kCGEventFlagsChanged) { 
     NSLog(@"modifier key!"); 
    } 
} 
+1

콜백에서'CGEventGetType'을 사용하여'NSEvent'로 변환하기 전에 이벤트 유형을 검사 할 수 있습니다. – JWWalker