Mavericks: Come aggiungere la sorgente di input tramite plists / defaults?

4

Sto tentando di automatizzare la configurazione di OS X, ma sono bloccato a cercare di aggiungere una nuova sorgente di input o un layout di tastiera.

Di solito uso due layout: regolari US e US International, quindi quello che sto cercando di fare è semplicemente aggiungere il layout US International.

Ecco cosa ho notato finora. Quando aggiungo manualmente il layout, vedo che questa voce viene aggiunta alla mia chiave AppleEnabledInputSources su com.apple.HIToolbox plist:

--- a/def0.txt
+++ b/def1.txt
@@ -17,6 +17,11 @@
                 {
             "Bundle ID" = "com.apple.PressAndHold";
             InputSourceKind = "Non Keyboard Input Method";
+        },
+                {
+            InputSourceKind = "Keyboard Layout";
+            "KeyboardLayout ID" = 15000;
+            "KeyboardLayout Name" = "USInternational-PC";
         }
     );
     AppleInputSourceHistory =     (

Ho ottenuto questo risultato facendo defaults read com.apple.HIToolbox . Posso confermare la stessa aggiunta aprendo direttamente ~/Library/Preferences/com.apple.HIToolbox.plist .

Quindi ho deciso che probabilmente tutto ciò che dovevo fare era aggiungere la stessa voce e tutto funzionerebbe. Così ho ripristinato l'aggiunta manuale (e ho confermato che la voce dal plist era sparita) e ora ho provato:

$ defaults write com.apple.HIToolbox AppleEnabledInputSources -array-add '{InputSourceKind="Keyboard Layout"; "KeyboardLayout Name"="USInternational-PC"; "KeyboardLayout ID"=15000;}'

Confermando nuovamente tramite defaults read diffs che aggiunge la stessa voce al plist, ma non funziona!

Ho provato a uccidere cfprefsd e SystemUIServer e persino a riavviare, ma nessuno di questi sembra funzionare.

Qualcuno ha idea di cosa potrebbe accadere qui?

    
posta sigriston 11.04.2014 - 17:18
fonte

1 risposta

1

Risulta che il formato che ho usato per la voce AppleEnabledInputSources non è corretto perché considera tutto come tipo string , ma KeyboardLayout ID deve essere di tipo integer !

Quindi il modo corretto di farlo sarebbe tramite XML:

defaults write com.apple.HIToolbox AppleEnabledInputSources -array-add '<dict><key>InputSourceKind</key><string>Keyboard Layout</string><key>KeyboardLayout ID</key><integer>15000</integer><key>KeyboardLayout Name</key><string>USInternational-PC</string></dict>'

Dopo aver eseguito quel comando e fatto un logout / login, sembra che le cose funzionino bene.

    
risposta data 11.04.2014 - 17:53
fonte

Leggi altre domande sui tag