Глобальные часы какао для нажатия клавиши-модификатора
Используя 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!");
}
}