Как программно изменить раскладку клавиатуры Mac OS X? - PullRequest
2 голосов
/ 27 июля 2010

Мое приложение Qt поддерживает изменение языка ввода в Linux и Windows.Я хочу добавить поддержку для изменения языка ввода в Mac OSX.

К сожалению, у меня нет никакой информации о Mac SDK.(Моей первой и последней работой с OS X была компиляция Qt и компиляция моего приложения!)

Я нашел эту проблему в Google и обнаружил, что мне нужно использовать Службы ввода текста , а также нашелкоды:

TISInputSourceRef isref;
isref = TISCopyCurrentKeyboardInputSource();
CFDataRef uchr = (CFDataRef)TISGetInputSourceProperty(isref, kTISPropertyUnicodeKeyLayoutData);

UCKeyboardLayout * keyLayoutPtr=(UCKeyboardLayout*)CFDataGetBytePtr(uchr);

Является ли keyLayoutPtr указателем для текущей раскладки клавиатуры?

Если ответ на поставленный выше вопрос «да», то что я должен сравнить с keyLayoutPtr?

Другими словами, как я могу проверить, является ли текущая раскладка клавиатуры (дляпример) "английский"?(Или что-то вроде LANG_ENGLISH в Win API или us в XLib.)

1 Ответ

1 голос
/ 27 июля 2010

Я думаю, вы передадите isref на TISGetInputSourceProperty, используя ключ kTISPropertyInputSourceLanguages, и проверите, является ли первый код языка в массиве "en" или что-то в этом роде. Я не знаю, вернется ли он просто "en" или "en-US" и т. Д.

...