Было предложено несколько подходов к уведомлению о нажатии клавиш. В 10.6 появилась идея глобального монитора событий с помощью addGlobalMonitorForEventsMatachingMask. В более ранних выпусках есть Carbon Event Manager и GetEventMonitorTarget. И есть событие CoreGraphics, как в CGEventTapCreate.
Все эти идеи пришли от Н.С.Года в ответе на вопрос здесь .
В любом или во всех этих методах возможно ли в точке обработчика события определить, какое окно является пунктом назначения для нажатия клавиши?