Comment supprimer ou désactiver une disposition de clavier par défaut?

17

Est-il possible de supprimer ou de désactiver l'une des dispositions de clavier par défaut d'OS X Lion?

J'utilise une disposition de clavier personnalisée, et maintenant que j'ai réussi à la définir comme la disposition de clavier par défaut à l'échelle du système , j'aimerais pouvoir décocher ou supprimer la disposition de clavier «US» intégrée fournie avec le système d'exploitation X. Voici une capture d'écran - notez que la case à cocher est désactivée:

Capture d'écran

Dans OS X 10.9, ce volet de préférences a été repensé, mais il n'y a toujours aucun moyen de «supprimer» la disposition de clavier «US» intégrée:

Capture d'écran

Étant donné que je n'utilise jamais la disposition du clavier américain, je serais ravi de m'en débarrasser, c'est-à-dire de le supprimer du menu Entrée de la barre de menus. Comment puis-je faire ceci?


Mise à jour: la réponse de Daniel ne répond pas vraiment à cette question, mais elle offre des informations précieuses concernant ce problème:

Mac OS X semble nécessiter au moins une disposition de clavier que le système reconnaît comme une disposition de «caractères latins» à sélectionner.

En supposant qu'il s'agit d'informations exactes (merci Daniel!), La question pourrait être reformulée comme suit:

Comment faire en sorte qu'OS X considère un clavier personnalisé comme une disposition de caractères latins?


Mise à jour: je viens de tomber sur quelque chose qui pourrait aider.

Mathias Bynens
la source
1
Je ne pense pas que le "latin" soit suffisant. Cela se fait facilement dans Ukelele en définissant l'ID du clavier sur Roman. Je soupçonne que votre disposition doit également faire partie de l'AppleKeyboardLayouts.bundle dans les dispositions système / bibliothèque / clavier.
Tom Gewecke

Réponses:

21
  1. Activez une source d'entrée qui ne ressemble pas à la disposition de votre clavier physique dans les Préférences Système (j'ai utilisé Afghan Dari).
  2. Courez f=~/Library/Preferences/ByHost/com.apple.HIToolbox*.plist; plutil -convert xml1 $f; open $f -e.
  3. Supprimez les autres sources d'entrée, à l'exception de la disposition de clavier temporairement activée et de votre disposition de clavier personnalisée.
  4. Déconnectez-vous et reconnectez-vous.
  5. Supprimez la disposition du clavier temporairement activée de la liste des propriétés.
  6. Déconnectez-vous et reconnectez-vous.

Edit: la méthode ci-dessus semble avoir cessé de fonctionner en 10.9. Cela a fonctionné à la fois en 10,9 ou 10,8:

  1. Remplacez la source d'entrée actuelle par votre disposition de clavier personnalisée.
  2. Ouvert ~/Library/Preferences/com.apple.HIToolbox.plist(en 10.9) ou ~/Library/Preferences/ByHost/com.apple.HIToolbox.*.plist(en 10.8 et versions antérieures). Vous pouvez convertir le plist en XML avec plutil -convert xml1.
  3. Supprimez la ou les sources d'entrée que vous souhaitez désactiver du AppleEnabledInputSourcesdictionnaire. S'il y a une AppleDefaultAsciiInputSourceclé, retirez-la.
  4. Redémarrer.
Lri
la source
1
Aha, cela semble fonctionner si vous redémarrez l'ordinateur au lieu de simplement vous déconnecter puis vous reconnecter (étape 4). Merci! Pourriez-vous publier une nouvelle réponse avec un lien vers votre ressource afin que vous puissiez obtenir la prime?
Mathias Bynens
1
@MathiasBynens J'ai modifié la réponse et mon site Web. Lorsque j'ai réessayé la deuxième méthode, j'ai également dû redémarrer pour appliquer les modifications.
Lri
4
Fonctionne correctement sous OS X 10.9 si vous redémarrez votre ordinateur. Cependant, j'ai dû également supprimer la disposition temporaire du fichier plist et redémarrer à l'aide de 'sudo reboot', sinon la disposition temporaire a été ajoutée au redémarrage normal.
Unnamed_1
2
@Lri Le 10.9, j'ai dû supprimer: AppleEnabledInputSources: 0 (l'ancien élément de mise en page par défaut) et le: AppleInputSourceHistory: dictionary (en utilisant PlistBuddy). Aucun redémarrage, mais uniquement une déconnexion nécessaire.
RolKau
1
Cela ne fonctionne pas sur Yosemite pour moi. Chaque fois que je change le fichier dans Xcode, il est juste restauré après quelques secondes. Quelqu'un peut-il expliquer comment vous l'avez fait exactement?
Simon Perepelitsa
7

Il semble que vous ne pouvez pas faire ce que vous voulez sans un piratage encore inconnu du système . Mac OS X semble nécessiter au moins une disposition de clavier que le système reconnaît comme une disposition de "caractères latins" à sélectionner. Cela évite que vous ne puissiez pas entrer votre mot de passe sur l'écran de connexion, etc. Si vous avez sélectionné le français, le canadien ou une autre disposition de clavier que le système reconnaît comme caractères latins, vous pouvez désélectionner la disposition américaine.

Votre problème est que votre disposition personnalisée, tout en contenant des caractères latins, n'est pas reconnue par le système comme une disposition de clavier latine et ne peut donc pas être la seule disposition de clavier sélectionnée. Voir cette question (manquant malheureusement d'une excellente réponse) pour plus d'informations.

Notez qu'une bonne réponse à cette question répondrait également à votre question. Hélas, ma réponse ici ne fait que clarifier le problème, mais je n'ai pas de solution étape par étape pour vous. Bien qu'un tel piratage soit possible, je ne vois aucune preuve que quelqu'un ait trouvé comment convaincre Mac OS X qu'un clavier personnalisé particulier est sûr à utiliser comme seul clavier sélectionnable.

Daniel
la source
@Lri Je suppose que vous avez raison, mais vous n'avez pas le matériel pour le tester. Peut-être y a-t-il un lecteur de ce site qui le peut?
Daniel
7

Par souci d'exhaustivité, j'ai déposé ceci sous l'ID de bogue # 11137961 auprès d'Apple, et voici la réponse que j'ai obtenue:

ID de bogue #: 11137961
Titre du bogue: autoriser la désactivation des dispositions de clavier par défaut (intégrées) lors de l'utilisation d'une disposition personnalisée


L'ingénierie a déterminé que ce problème se comporte comme prévu sur la base des informations suivantes:

Si le problème consiste simplement à faire reconnaître votre disposition de clavier comme compatible ASCII, le plus simple serait de "regrouper" votre .keylayout, alors votre Info.plist peut contenir un dictionnaire "KLInfo_" qui le décrit plus en détail, comme:

 <key>TISIntendedLanguage</key>
 <string>en</string>   # BCP 47 language string

J'aurais besoin d'examiner cela un peu plus, mais il semble que TIS va scanner la sortie de la disposition du clavier pour produire un USet et produire une idée initiale de l'ascii en vérifiant s'il passe le test minimal suivant:

 uset_containsRange(uSet, 0x0020, 0x0021) && uset_containsRange(uSet, 0x002C, 0x0039) &&
 uset_containsRange(uSet, 0x003F, 0x005A) && uset_containsRange(uSet, 0x0061, 0x007A);

TIS examinera également l'ensemble d'exemples pour les paramètres régionaux indiqués ci-dessus et nécessitera une bonne douzaine de caractères dans la plage [a-z].

Pour des suggestions sur le regroupement d'un .keylayout, voir également TextInputSources.h.

Si le problème persiste ou si vous avez des questions concernant la résolution de ce problème, veuillez mettre à jour votre rapport de bogue avec ces informations.

Nous fermons maintenant ce rapport de bogue.

Mathias Bynens
la source
1
Vérifié: ma mise en page répond à ces critères mais elle n'est pas reconnue comme une mise en page par défaut possible. Leurs ingénieurs n'ont donc pas donné toutes les informations ou donné des informations incorrectes, semble-t-il.
Unnamed_1
1
@DmitryDulepov Il est possible de l'utiliser comme disposition par défaut, mais le bouton pour supprimer l'autre ne sera toujours pas activé; vous devrez le faire manuellement (voir mon commentaire à la réponse de
Lri
@RolKau, oui, mais il y aura d'autres problèmes plus tard. Si vous disposez de plusieurs mises en page, la nouvelle mise en page personnalisée ne sera pas disponible dans certaines applications. Par exemple, vous ne pourrez pas y basculer dans la barre de recherche de l'AppStore. Du moins, je ne pouvais pas.
Unnamed_1
2

Voici une autre idée: il y a quelques années, les ensembles de dispositions de clavier Apple étaient beaucoup plus faciles à modifier, et ce problème semble avoir été résolu:

http://hintsforums.macworld.com/archive/index.php/t-71629.html

Peut-être que l'on pourrait toujours utiliser l'ancien ensemble modifiable, si vous pouviez en obtenir un à partir d'un ancien système, dans le système d'exploitation actuel.

Tom Gewecke
la source
1

Je viens de tomber sur quelque chose qui pourrait aider. Voici:

$ defaults read /Library/Preferences/com.apple.HIToolbox.plist 
{
    AppleCurrentKeyboardLayoutInputSourceID = "com.apple.keylayout.Dutch";
    AppleDefaultAsciiInputSource =     {
        InputSourceKind = "Keyboard Layout";
        "KeyboardLayout ID" = 1337;
        "KeyboardLayout Name" = QWERTY;
    };
    AppleEnabledInputSources =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        }
    );
    AppleInputSourceHistory =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        }
    );
    AppleSelectedInputSources =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        }
    );
}

C'est sur mon système, où ma disposition de clavier personnalisée (nommée "QWERTY") est la valeur par défaut. Notez que les propriétés KeyboardLayout Nameet KeyboardLayout IDfont référence à l'ID et au nom au début du .keylayoutfichier.

Comme vous pouvez le voir, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceIDrenvoie toujours la chaîne "com.apple.keylayout.Dutch". Y a-t-il une liste quelque part des com.apple.keylayoutvaleurs disponibles ? Est-il possible d'obtenir une telle valeur pour une disposition de clavier personnalisée? Parce que dans ce cas, nous pourrions simplement remplacer la propriété.

En outre, les AppleEnabledInputSources, AppleInputSourceHistoryet les AppleSelectedInputSourcespropriétés tous semblent ignorer la disposition du clavier personnalisé, que leurs valeurs correspondent à la disposition du clavier natif OS X I sélectionné à l' origine lors de l' exécution assistant d'installation.


Une autre mise à jour: Aha! Il semble qu'il y ait un autre plistfichier à partir duquel nous pourrions être en mesure de copier les paramètres.

$ defaults read ~/Library/Preferences/ByHost/com.apple.HIToolbox.*.plist 
{
    AppleCurrentKeyboardLayoutInputSourceID = "org.unknown.keylayout.QWERTY";
    AppleDateResID =     {
        smRoman = 2;
    };
    AppleEnabledInputSources =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        },
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 1337;
            "KeyboardLayout Name" = QWERTY;
        },
                {
            "Bundle ID" = "com.apple.CharacterPaletteIM";
            InputSourceKind = "Non Keyboard Input Method";
        },
                {
            "Bundle ID" = "com.apple.KeyboardViewer";
            InputSourceKind = "Non Keyboard Input Method";
        },
                {
            "Bundle ID" = "com.apple.inputmethod.ironwood";
            InputSourceKind = "Non Keyboard Input Method";
        }
    );
    AppleGlobalTextInputProperties =     {
        TextInputGlobalPropertyPerContextInput = 0;
    };
    AppleInputSourceHistory =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 1337;
            "KeyboardLayout Name" = QWERTY;
        },
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        }
    );
    AppleNumberResID =     {
        smRoman = 2;
    };
    AppleSelectedInputSources =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 1337;
            "KeyboardLayout Name" = QWERTY;
        },
                {
            "Bundle ID" = "com.apple.inputmethod.ironwood";
            InputSourceKind = "Non Keyboard Input Method";
        }
    );
    AppleTimeResID =     {
        smRoman = 2;
    };
}

Comme vous pouvez le voir ( AppleCurrentKeyboardLayoutInputSourceID), les dispositions de clavier apparemment personnalisées obtiennent des valeurs telles que "org.unknown.keylayout.FOO"FOOest le nom de la disposition de clavier (comme spécifié dans le .keylayoutfichier).

Donc, essayons de définir toutes les valeurs dans notre disposition de clavier personnalisée, nommée QWERTYet identifiée 1337(spécifiée dans le .keylayoutfichier):

sudo defaults write /Library/Preferences/ByHost/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID -string "org.unknown.keylayout.QWERTY"

Malheureusement, cela ne semble pas fonctionner.

Mise à jour: @Lri a découvert une méthode fiable - voir sa réponse.

Mathias Bynens
la source
1

Réponse d'Apple à mon rapport de bogue, dans lequel je demandais de permettre de supprimer la disposition du clavier par défaut du système si un autre est sélectionné via les Préférences Système:

L'ingénierie a déterminé que ce n'est pas un problème pour Apple.

En supposant que cette disposition du clavier personnalisé est livré ( .keylayoutse trouve dans un paquet comme foo.bundle/Contents/Resources/foo.keylayout), cela pourrait être aussi facile que l' insertion dans le Info.plist« s le KLInfo_ dictionnaire:

<key>KLInfo_Qwerty</key>
<dict>
  <key>TISInputSourceID</key>
  <string>com.imgur.stack.keyboardlayout.Qwerty</string>
  <key>TISIntendedLanguage</key>  
  <string>en</string> 
</dict>

Si cette disposition est nécessaire à l'échelle du système (c'est-à-dire, y compris la saisie du mot de passe), elle pourrait être installée dans /Library/Keyboard Layouts/, plutôt qu'au même emplacement dans ~/Library/.

Veuillez mettre à jour votre rapport de bogue pour nous faire savoir si ce problème persiste.

Si vous avez des questions concernant la résolution de ce problème, veuillez mettre à jour votre rapport de bogue avec eux.

Veuillez vérifier régulièrement les nouveaux produits Apple pour toute mise à jour susceptible d'affecter ce problème. Encore une fois, merci d'avoir pris le temps de soumettre des bugs. Nous apprécions sincèrement votre contribution.

Mathias Bynens
la source
1

Je viens de réussir à supprimer la disposition par défaut sur High Sierra en utilisant la méthode suivante:

  1. Accédez à votre Library/Preferencesdossier.
  2. Ouvrez le fichier com.apple.HIToolbox.plistfichier, soit en double-cliquant dessus, soit en utilisant opensur la ligne de commande. Cela fera apparaître XCode et il peut vouloir installer des composants supplémentaires.
  3. Répétez l'étape 2 jusqu'à ce que XCode affiche enfin la structure du fichier.
  4. Localisez le AppleEnabledInputSourcesnœud et dépliez-le.
  5. Supprimez l'entrée de la mise en page que vous souhaitez supprimer.
  6. Enregistrez le fichier et quittez XCode.

Maintenant, vous devez probablement vous déconnecter ou redémarrer pour faire cette finale. J'ai quand même dû redémarrer pour une mise à jour, ce qui a fait l'affaire pour moi. Maintenant, je suis heureux de taper dans Neo à une vitesse glaciale angoissante, mais pas un seul QWERTZ n'est en vue!

Bombe
la source
0

Voici une idée: après vous être assuré que l'ID du clavier de votre disposition personnalisée est défini sur Roman, créez un AppleKeyboardLayouts.bundle personnalisé qui contient uniquement cette disposition et remplacez-le par celui fourni avec le système d'exploitation. (Je ne sais pas moi-même ce qui est impliqué dans la création d'un .bundle)

Tom Gewecke
la source
0

Vous pouvez utiliser Ukelele pour marquer votre disposition utilisée comme celle qui utilise le script latin. Exportez en tant que bundle, installez et vous pourrez ensuite supprimer celui des États-Unis.

Alexandre G
la source
-1

Cela peut se faire facilement. Modifiez d'abord votre mise en page personnalisée (utilisez la barre de menus Menu d'entrée), puis désélectionnez la mise en page américaine.

shpokas
la source
Ma disposition personnalisée est celle actuellement utilisée. Comme mentionné dans la question, je n'utilise plus la disposition du clavier américain.
Mathias Bynens
Je vis sans clavier américain et je n'ai eu aucun problème à le désélectionner. Les autres personnalisations dont je dispose sont la région et la langue non par défaut et non américaines.
shpokas
Pouvez-vous désélectionner la disposition du clavier que vous avez choisie lors de la configuration initiale du Mac?
Mathias Bynens
Oui, je peux le faire si je change de région également.
shpokas
Vous voyez, c'est le problème. Il y a toujours l'une des dispositions de clavier intégrées d'OS X que vous ne pouvez pas supprimer ou désactiver.
Mathias Bynens