Редактировать: Оказывается, я был введен в заблуждение во время моих первых исследований API специальных возможностей.Когда я нашел защищенное текстовое поле в иерархии AX, я легко смог установить значение.Не знаю, что делать с этим вопросом, но я хотел обновить его для будущих пользователей.
Я работаю над кодом, который будет публиковать события клавиатуры в целевых приложениях с помощью API-интерфейсов Accessibility.До сих пор я был в состоянии написать тривиальное приложение, которое позволяет мне вводить строковое значение и затем публиковать события клавиатуры с этими кодами клавиш в целевом приложении.В действительности строки могут быть прочитаны из другого места.
Что я еще не смог выяснить, это как выяснить, следует ли и какие ключи модификаторов также публиковать.Например, когда я набираю Hello, world!
в своем тестовом приложении, входные данные отправляются в другое приложение как hello, world1
, потому что я еще не включаю клавиши-модификаторы для создания верхнего регистра H и восклицательного знака.Это усложняется вдвойне символами с несколькими нажатиями клавиш, такими как é
или ü
.При отправке é
отправляется, например, необработанный e
без акцента.
Есть ли простой метод, который я упускаю из виду, для распознавания модификаторов в сочетании с кодом ключа для создания определенной строки NSString или unichar?Если нет, есть ли у кого-нибудь предложение, как поступить?Пока что лучшее, что я придумал, - это вызвать UCKeyTranslate
со всеми возможными комбинациями модификаторов, пока я не найду комбинацию, соответствующую unichar
, которую я использую -[NSString characterAtIndex:]
Я не уверен, что это масштабируемо или надежно, хотя, учитываяхарактер многократного нажатия некоторых символов, как указано выше.
Заранее спасибо!