2010-07-26 10 views
2

Mon application Qt prend en charge la modification de la langue d'entrée sous Linux et Windows. Je veux également ajouter un support pour changer la langue d'entrée dans Mac OSX.Comment modifier la disposition du clavier Mac OS X par programme?

Malheureusement, je n'ai aucune information sur le SDK Mac. (Mon premier et dernier travail avec OS X est la compilation de Qt et de compiler mon application!)

Je googler ce problème et a constaté que je dois utiliser Text Input Source Services et aussi je trouve ces codes:

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

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

Est-keyLayoutPtr un pointeur pour la disposition actuelle du clavier?

Si la réponse à la question ci-dessus est "oui", alors que devrais-je comparer avec keyLayoutPtr? En d'autres termes, comment puis-je vérifier si la disposition actuelle du clavier est (par exemple) "Anglais"? (Ou quelque chose comme LANG_ENGLISH dans l'API Win ou us xlib.)

Répondre

1

Je pense que vous passez isref à TISGetInputSourceProperty, en utilisant la kTISPropertyInputSourceLanguages clé, et vérifier si le premier code de langue dans le tableau est « en » ou quelque chose comme cette. Je ne sais pas si cela retournera juste "en" ou "en-US" etc.