Кто-нибудь знает, как определить, когда пользователь меняет текущий источник входного сигнала в OSX?OSX Изменение источника входного сигнала какао
Я могу назвать TISCopyCurrentKeyboardInputSource()
, чтобы узнать, какой источник входного ID используется так:
TISInputSourceRef isource = TISCopyCurrentKeyboardInputSource();
if (isource == NULL)
{
cerr << "Couldn't get the current input source\n.";
return -1;
}
CFStringRef id = (CFStringRef)TISGetInputSourceProperty(
isource,
kTISPropertyInputSourceID);
CFRelease(isource);
Если мой входной источник «немецкий», то идентификатор заканчивает тем, что «ком. apple.keylayout.German ", который в основном я хочу. За исключением:
- Результаты
TISCopyCurrentKeyboardInputSource()
не изменяются после моего запуска процесса? В частности, я могу вызватьTISCopyCurrentKeyboardInputSource()
в цикле и переключить свой входной источник, ноTISCopyCurrentKeyboardInputSource()
продолжает возвращать исходный источник, с которого начался мой процесс. - Я бы очень хотел, чтобы вас уведомили, когда изменяется исходный источник. Есть ли способ сделать это? Чтобы получить уведомление или какое-либо событие, сообщившее мне, что источник ввода был изменен?
Спасибо! Прекрасно работает. –