¿Cómo cambio los atajos de control de misión desde la línea de comando?

10

He estado tratando de resolver esto por mucho tiempo. Tengo un script de aprovisionamiento de Mac OS bastante típico:

https://gist.github.com/ryanpcmcquen/b2e608311f286a4ab3e1

Me gustaría cambiar los atajos de control de la Misión a todos Ctrl+ Alt+ en ...lugar de Ctrl+ .... Por ejemplo, el valor predeterminado es: Ctrl+ Uppara activar el Control de misión. Me gustaría cambiar esto a Ctrl+ Alt+ Up, porque el acceso directo actual entra en conflicto con otros programas que uso.

Tenga en cuenta que ya estoy al tanto de cómo hacer esto System Preferences > Keyboard > Shortcuts, estoy buscando una solución de línea de comandos programable.

EDITAR: Gracias a @ user3439894 revisé e hice un script para cambiar todas las claves de plist a lo que quiero que sean. El único problema es que no funciona. :-(

Esto es lo que tengo hasta ahora:

#!/bin/bash
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 32 "{enabled = 1; value = { parameters = (65535, 126, 2883584); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 33 "{enabled = 1; value = { parameters = (65535, 125, 2883584); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 34 "{enabled = 1; value = { parameters = (65535, 126, 3014656); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 35 "{enabled = 1; value = { parameters = (65535, 125, 3014656); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 79 "{enabled = 1; value = { parameters = (65535, 123, 2883584); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 80 "{enabled = 1; value = { parameters = (65535, 123, 3014656); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 81 "{enabled = 1; value = { parameters = (65535, 124, 2883584); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 82 "{enabled = 1; value = { parameters = (65535, 124, 3014656); type = standard; }; }"
chown -Rf `whoami` ~/Library/Preferences/com.apple.symbolichotkeys.plist;
defaults read com.apple.symbolichotkeys
ryanpcmcquen
fuente
¿Alguna vez encontraste una solución para esto?
Nathan
@Nathan, no. Acabo de rodar con los valores predeterminados ahora.
ryanpcmcquen
Tuve un problema similar. Quizás puedas probar mi solución: apple.stackexchange.com/questions/344494/…
Nathan
@Nathan, parece que su solución requiere intervención manual. Acabo de aprender cómo cambiar los otros programas que uso para tener diferentes teclas de acceso rápido. Hammerspoon FTW.
ryanpcmcquen
Esta parte del comando en type = standard;realidad debería tener en type = 'standard';cuenta las comillas 'standard'. Sin embargo, dicho esto, a veces incluso con una línea de comando correctamente formada, el cambio simplemente no tiene efecto, incluso si se ; killall -u $USER cfprefsdagrega al final del defaults comando . Además, la ruta completa al .plistarchivo en este caso de uso no es necesaria y simplemente, por ejemplo, defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys ...y el resto del comando es todo lo que es necesario.
user3439894

Respuestas:

5

Esta no es una respuesta directa, aunque espero que la información presentada en este documento lo ayude a obtener una respuesta directa.

Puedo decirte qué cambios en qué archivo cuando cambias el método abreviado de teclado predeterminado para Control de misión de Control-Up Arrow a Control-Option-Up Arrow. Es el "Número de elemento 2" de la matriz de "parámetros" en el Diccionario "valor" del Diccionario "32" y el Diccionario "34" del Diccionario "AppleSymbolicHotKeys" en el /Users/$USER/Library/Preferences/com.apple.symbolichotkeys.plistarchivo.

Aquí hay una defaults readrepresentación de la com.apple.symbolichotkeys.plistestructura del archivo en relación con los cambios realizados en las circunstancias definidas anteriormente.

Control de misión con el valor predeterminado de la flecha Control-Up

{
    AppleSymbolicHotKeys =     {
        32 =         {
            enabled = 1;
            value =             {
                parameters =                 (
                    65535,
                    126,
                    2359296
                );
                type = standard;
            };
        };
        34 =         {
            enabled = 1;
            value =             {
                parameters =                 (
                    65535,
                    126,
                    2490368
                );
                type = standard;
            };
        };
    };
}

Control de misión cambiado a Control-Opción-Flecha arriba

{
    AppleSymbolicHotKeys =     {
        32 =         {
            enabled = 1;
            value =             {
                parameters =                 (
                    65535,
                    126,
                    2883584
                );
                type = standard;
            };
        };
        34 =         {
            enabled = 1;
            value =             {
                parameters =                 (
                    65535,
                    126,
                    3014656
                );
                type = standard;
            };
        };
    };
}

La sección ERRORES de la defaultspágina del manual dice:

Los valores predeterminados se pueden estructurar de formas muy complejas, lo que dificulta que el usuario los ingrese con este comando.

Y este es un ejemplo perfecto, ya que será una línea de comando muy compleja que se utiliza defaultspara escribir los valores objetivo en los elementos de la matriz objetivo, si es posible. Solo un FYI ... Si va a intentar hacer un defaults write com.apple.symbolichotkeys ...comando, asegúrese de haber hecho una copia de seguridad del archivo de destino primero.

La otra opción es usar un AppleScript para cambiar la configuración navegando por la GUI de Preferencias del Sistema y eso también será un poco complejo en comparación con la configuración de un objeto de nivel superior, que el objetivo aquí no es. Ni siquiera estoy seguro de que sea factible, sin embargo, si necesitaba una forma automatizada, lo resolvería, pero no tengo tiempo para descubrir ninguno de los métodos, lo siento.

Al menos ahora sabe qué cambios, dónde y desde allí, puede resolverlo usted mismo u obtener ayuda adicional para saber un poco más.

Aquí hay una imagen recortada en Xcode del com.apple.symbolichotkeys.plistarchivo.

ingrese la descripción de la imagen aquí

Por cierto, atrapé los cambios usando una utilidad de terceros que registró los cambios en el sistema de archivos y luego convirtió esa información en una salida más legible para los humanos para proporcionar esta información.

usuario3439894
fuente
Parece que cambia los archivos plist adecuados, el único problema es que los accesos directos no cambian realmente, no después de reiniciar, volver a leer el archivo ni nada.
ryanpcmcquen
¿Cuál es el nombre de esta "utilidad de terceros que registró los cambios en el sistema de archivos y luego convirtió esa información en una salida más legible para los humanos"?
Allen Bargi
1
@Allen Bargi, IIRC Probablemente filemonfue parte de los Extras del libro "Mac OS X Internals - To The Apple's Core" en forma de código fuente filemon.c que compilé en un ejecutable en mi sistema. Luego comparé las diferencias en el archivo modificado de su estado actual con el archivo de una copia de seguridad de Time Machine realizada justo antes de los cambios. También puede usar el comando nativo fs_usage .
user3439894
@ryanpcmcquen su enlace está roto
charlesreid1
@ charlesreid1, bueno, no funcionó.
ryanpcmcquen
1

Esta es mi recomendación: use una utilidad como Karabiner para lograr dicha personalización.

Como desarrollador, quiero decir que personalmente considero que es un problema fascinante y tentador, y realmente muestra el lado más feo y oscuro de macOS que se esconde detrás de escena que solo los desarrolladores de software y los piratas informáticos pueden apreciar realmente ...

El problema es bastante simple: solo quiero reasignar la combinación de teclas predeterminada a mi propio enlace.

¿Por qué demonios es tan difícil / complicado? Tengo la intención de averiguar y publicar una solución ... Estén atentos.

Steve Benner
fuente
Gracias, espero ver lo que descubres. Pero descargar un programa externo lleva tanto tiempo como configurarlos a través de las interfaces estándar de Mac, todavía espero una solución de línea de comandos incorporada.
ryanpcmcquen