2 votes

Comment changer la méthode de saisie de l'utilisateur (par exemple, U.S. vs. Arabe) sur OS X ?

En écrivant un entraîneur de vocabulaire pour l'arabe, mon programme devra automatiquement changer la méthode d'entrée entre la langue par défaut de l'utilisateur et l'arabe.

Sous Windows, cela peut être fait avec LoadKeyboardLayout et ActivateKeyboardLayout.

Existe-t-il un appel API pour réaliser la même chose sur OS X ?

Il est acceptable de demander à l'utilisateur d'activer lui-même une fois le clavier arabe via les préférences Système, mais le fait qu'il doive passer manuellement d'une langue à l'autre à chaque fois est une nuisance que je veux éviter.

Ou, en alternative, puis-je attribuer la méthode d'entrée préférée à un champ de texte en mode Carbone afin que je puisse utiliser deux champs de texte, l'un pour l'anglais américain, l'autre pour l'arabe, de cette manière ?

0voto

jackjr300 Points 6037

Vous avez besoin de l'API Carbon, consultez la référence des services de source de saisie de texte

Voici un code d'exemple sans gestion d'erreurs (Mac OS X v10.5 et ultérieur)

CFStringRef tID = CFSTR("com.apple.keylayout.Arabic"); // ou "com.apple.keylayout.US"
TISInputSourceRef inputSource = NULL;
CFArrayRef allInputs = TISCreateInputSourceList(NULL, true);
NSUInteger count = CFArrayGetCount(allInputs);
for (int i = 0; i < count; i++) {
    inputSource = (TISInputSourceRef)CFArrayGetValueAtIndex(allInputs, i);
    if (!CFStringCompare(tID, TISGetInputSourceProperty(inputSource, kTISPropertyInputSourceID), 0)) {
        TISEnableInputSource(inputSource);
        TISSelectInputSource(inputSource);
        break;
    }
}
CFRelease(allInputs);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X