У меня есть обратный вызов NSEvent Keyboard. Я смотрю на флаги модификатора события, чтобы определить, следует ли использовать заглавную букву.
Когда Caps-Lock включен и Shift удерживается, и вы нажимаете клавишу ... эта клавиша появляется как заглавная буква, но оба флага SHIFT
и CAPS
возвращают FALSE
.
//For testing which flags are on.
//Holding down Shift and Caps for some reason = FALSE FALSE...
NSUInteger flags = [NSEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask;
if( flags == NSShiftKeyMask ){
NSLog(@"Shift - TRUE");
} else {
NSLog(@"Shift - FALSE");
}
if( flags == NSAlphaShiftKeyMask ){
NSLog(@"CAPS - TRUE");
} else {
NSLog(@"CAPS - FALSE");
}
return newUserKeypress;
Итак,
-Caps-Lock включен (индикатор включен)
-Сдвиг удерживается
-Нажмите клавишу [e]
-Выход "E"
-Но вывод вышеуказанного кода ЛОЖЬ ЛОЖЬ.
Использование либо сдвига, либо заглавных букв правильно отображает значения. Почему они оба не сообщают правильно? И если они оба выключены ... почему буква все еще пишется с большой буквы?
Если это по какой-то причине правильно ... как я могу отличить обычное нажатие клавиши, кроме нажатия клавиш со смещением и удерживанием колпачков? (они имеют одинаковые FALSE-FALSE флаги)