Установив ответ на событие, я не могу определить, какой ключ-модификатор был нажат с учетом CGEvent.Получение ключа-модификатора, нажатого в CGEvent tap
CGEventFlags flagsP;
flagsP=CGEventGetFlags(event);
NSLog(@"flags: 0x%llX",flagsP);
NSLog(@"stored: 0x%llX",kCGEventFlagMaskCommand);
if (flagsP==kCGEventFlagMaskCommand) {
NSLog(@"command pressed");
}
Учитывая приведенный выше фрагмент, первый NSLog возвращает другое значение из второго NSLog. Неудивительно, что условие не срабатывает при нажатии клавиши модификатора команды.
Мне нужно определить, нажата ли команда, альтернатива, опция, управление или сдвиг для данного CGEvent. Сначала, хотя мне нужна помощь, чтобы понять, почему это не работает.
Спасибо!
Спасибо, Питер. Это очень хорошо объясняет и решает мою проблему. – the979kid
Огромное спасибо, также знаете ли вы, есть ли способ проверить, нажат ли какой-либо модификатор? Или я должен явно проверить это для каждого из них? –
Я сделал это, но не знаю, является ли это лучшим/чистым способом? 'BOOL isModifierPressed = (flags & (kCGEventFlagMaskAlternate | kCGEventFlagMaskCommand | kCGEventFlagMaskControl | kCGEventFlagMaskShift))> 0; ' –