Клавиши управления, Shift, Command и Option в OS X не генерируют события NSKeyDown/kCGEventKeyDown
. Вместо этого вы можете получить событие NSFlagsChanged/kCGEventFlagsChanged
.
То есть «обычно», если пользователь ввел Option-T и вы сканируете события keyDown
, вы увидите только событие «T», которое включает тот факт, что ключ опции «модифицируя» его.
Если вы хотите получить flagsChanged
события, вы можете получить его с помощью события или где-нибудь в NSResponder
. Событие flagsChanged
сообщает вам о новой коллекции модификаторов (shift / command / etc). В этом случае полезно сохранить локальную копию предыдущих модификаторов, чтобы вы могли видеть, какая именно клавиша пошла вниз или вверх.