Quiero que un dominio com.apple.keyboard.modifiermapping.1452-628-0
contenga la siguiente matriz:
(
{
HIDKeyboardModifierMappingDst = 2;
HIDKeyboardModifierMappingSrc = 0;
},
{
HIDKeyboardModifierMappingDst = 0;
HIDKeyboardModifierMappingSrc = 2;
},
{
HIDKeyboardModifierMappingDst = 0;
HIDKeyboardModifierMappingSrc = 10;
}
)
Puedo lograrlo eliminando el valor actual y ejecutando tres -array-add
comandos:
defaults -currentHost delete -g com.apple.keyboard.modifiermapping.1452-628-0
defaults -currentHost write -g com.apple.keyboard.modifiermapping.1452-628-0 -array-add '{ HIDKeyboardModifierMappingDst = 2; HIDKeyboardModifierMappingSrc = 0; }'
defaults -currentHost write -g com.apple.keyboard.modifiermapping.1452-628-0 -array-add '{ HIDKeyboardModifierMappingDst = 0; HIDKeyboardModifierMappingSrc = 2; }'
defaults -currentHost write -g com.apple.keyboard.modifiermapping.1452-628-0 -array-add '{ HIDKeyboardModifierMappingDst = 0; HIDKeyboardModifierMappingSrc = 10; }'
defaults -currentHost read -g com.apple.keyboard.modifiermapping.1452-628-0
¿Qué sintaxis puedo usar para definir la matriz en un solo comando?
Si ejecuto el siguiente script:
defaults -currentHost delete -g com.apple.keyboard.modifiermapping.1452-628-0
defaults -currentHost write -g com.apple.keyboard.modifiermapping.1452-628-0 -array '(
{ HIDKeyboardModifierMappingDst = 2; HIDKeyboardModifierMappingSrc = 0; },
{ HIDKeyboardModifierMappingDst = 0; HIDKeyboardModifierMappingSrc = 2; },
{ HIDKeyboardModifierMappingDst = 0; HIDKeyboardModifierMappingSrc = 10; } )'
defaults -currentHost read -g com.apple.keyboard.modifiermapping.1452-628-0
Obtengo una matriz dentro de una matriz:
(
(
{
HIDKeyboardModifierMappingDst = 2;
HIDKeyboardModifierMappingSrc = 0;
},
{
HIDKeyboardModifierMappingDst = 0;
HIDKeyboardModifierMappingSrc = 2;
},
{
HIDKeyboardModifierMappingDst = 0;
HIDKeyboardModifierMappingSrc = 10;
}
)
)
Si pruebo con -plist
en lugar de -array
obtengo un Unexpected argument
.
Si ejecuto el siguiente script:
defaults -currentHost delete -g com.apple.keyboard.modifiermapping.1452-628-0
defaults -currentHost write -g com.apple.keyboard.modifiermapping.1452-628-0 -array '
{ HIDKeyboardModifierMappingDst = 2; HIDKeyboardModifierMappingSrc = 0; },
{ HIDKeyboardModifierMappingDst = 0; HIDKeyboardModifierMappingSrc = 2; },
{ HIDKeyboardModifierMappingDst = 0; HIDKeyboardModifierMappingSrc = 10; }'
defaults -currentHost read -g com.apple.keyboard.modifiermapping.1452-628-0
me sale un error de sintaxisdefaults[22044:679428] Could not parse: ... Try single-quoting it.
Pregunta nuevamente: ¿qué sintaxis puedo usar para definir la matriz en un solo comando?
-array
toma elementos de matriz individuales como argumentos individuales.
defaults -currentHost write -g com.apple.keyboard.modifiermapping.1452-628-0 -array \
'{ HIDKeyboardModifierMappingDst = 2; HIDKeyboardModifierMappingSrc = 0; }' \
'{ HIDKeyboardModifierMappingDst = 0; HIDKeyboardModifierMappingSrc = 2; }' \
'{ HIDKeyboardModifierMappingDst = 0; HIDKeyboardModifierMappingSrc = 10; }'
Los '\' se usan para hacer que el shell espere la siguiente línea, por lo que se pueden omitir si se escriben en una sola línea. No necesita usar delete
primero: a diferencia de -array-add
, -array
reemplaza toda la matriz con los nuevos contenidos.
Si no quiere hacerlo de esta manera, aquí hay una alternativa: puede pasar la estructura de datos como una cadena. Esto está más cerca de los ejemplos en su pregunta y funciona igual.
defaults -currentHost write -g com.apple.keyboard.modifiermapping.1452-628-0 '(
{ HIDKeyboardModifierMappingDst = 2; HIDKeyboardModifierMappingSrc = 0; },
{ HIDKeyboardModifierMappingDst = 0; HIDKeyboardModifierMappingSrc = 2; },
{ HIDKeyboardModifierMappingDst = 0; HIDKeyboardModifierMappingSrc = 10; } )'
tecnología
grg
tecnología
-array
y-dict
son opcionales. Y traté de convencerlo con inexistente-plist
... ¡Gracias!