Глобальные часы какао для нажатия клавиши-модификатора

Используя addGlobalMonitorForEventsMatchingMask, я могу проверить, нажимаются ли клавиши. И когда происходит событие, я могу проверить флаги модификаторов, чтобы увидеть, использовались ли какие-либо модификаторы совместно.

Но мне нужно знать, нажата ли модификатор без нажатия другой клавиши.

Как бы я это сделал?

1 ответ

Вы ищете события типа 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!");
    }
}
Другие вопросы по тегам