Возможно, вам даже не понадобится писать приложение, если то, что вы хотите, достигается с помощью словаря привязок клавиш по умолчанию или встроенной функции замены текста в Snow Leopard; для последнего см. вкладку «Текст» на панели «Язык и текст» в Системных настройках.
Нет способа определить, когда пользователь входит в режим «ввода текста» глобально, поскольку это определено на уровне приложения. Вы можете делать определенные вещи (как указано выше) в текстовой системе, предоставляемой платформой AppKit, но вы не сможете повлиять на приложения, которые не используют его, такие как приложения Adobe и любое поле ввода текста во Flash-ролике ( например, «Введите свое имя для доски рекордов:»). Единственные вещи, которые существуют в масштабе всей системы, - это ключевые события, которые намного ниже уровня, чем концепция ввода текста, и безопасный текстовый режим [1], который предназначен только для таких вещей, как поля пароля.
[1]: TN2150 описывает, как работает режим «безопасного ввода события», и ручной интерфейс к нему. Большинство приложений (Какао) просто используют NSSecureTextField, который выполняет тяжелую работу за вас.