Mavericks: ¿Cómo AGREGAR la fuente de entrada mediante plistas / valores predeterminados?

4

Estoy tratando de automatizar la configuración de mi OS X, pero estoy atascado tratando de agregar mediante programación una nueva fuente de entrada o distribución de teclado.

Por lo general, uso dos diseños: regular de EE. UU. y EE. UU. internacional, por lo que lo que estoy tratando de hacer es agregar el diseño de EE. UU.

Esto es lo que noté hasta ahora. Cuando agrego manualmente el diseño, veo que esta entrada se agrega a mi clave AppleEnabledInputSources en el 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 =     (

Obtuve esta salida haciendo defaults read com.apple.HIToolbox . Puedo confirmar la misma adición abriendo directamente ~/Library/Preferences/com.apple.HIToolbox.plist .

Así que decidí que probablemente todo lo que tenía que hacer era simplemente agregar la misma entrada y todo funcionaría. Así que revertí la adición manual (y confirmé que la entrada del plist se había ido) y ahora lo intenté:

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

Confirmo nuevamente a través de defaults read diffs que agrega la misma entrada a la lista, ¡pero no funciona!

Intenté matar cfprefsd y SystemUIServer e incluso reiniciar, pero ninguno de estos parece funcionar.

¿Alguien tiene una pista sobre lo que podría estar pasando aquí?

    
pregunta sigriston 11.04.2014 - 17:18

1 respuesta

1

Resulta que el formato que utilicé para la entrada AppleEnabledInputSources fue malo porque considera que todo es de tipo string , pero KeyboardLayout ID debe ser de tipo integer !

Por lo tanto, la forma correcta de hacerlo sería a través de 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>'

Después de ejecutar ese comando y hacer un cierre de sesión / inicio de sesión, parece que las cosas funcionan bien.

    
respondido por el sigriston 11.04.2014 - 17:53

Lea otras preguntas en las etiquetas