14 votos

Cambiar las claves de los modificadores de la línea de comandos

Como un gran usuario de Emacs, me gusta reasignación de mi tecla de Bloqueo de mayúsculas a la función que la tecla Ctrl. Hay un práctico cuadro de diálogo en el Teclado del Panel de Preferencias para hacer eso. Pero el problema es que esta configuración se pierde después de que alguien inicie sesión en otra cuenta que no esta preferencia.

Entonces, ¿hay alguna manera de hacer lo mismo que el panel de preferencias del cuadro de diálogo desde la línea de comandos?

9voto

Por curiosidad, me empezó a cavar alrededor de ~/Library/Preferences/ sólo para ver qué podía encontrar.

El cambio de preferencias y ejecutando:

defaults -currentHost read -g

muestra los cambios que se están escribiendo. Iba a escribir un breve script de bash para automatizar, pero parece que fue golpeado a la perforación:

#!/bin/bash                                                                      

mappingplist=com.apple.keyboard.modifiermapping

if [ $1 == "emacs" ]; then
    echo "Switching to emacs modifiers"
    defaults -currentHost write -g $mappingplist '(                              
                {                                                                
            HIDKeyboardModifierMappingDst = 4;                                   
            HIDKeyboardModifierMappingSrc = 2; },                                
                {                                                                
            HIDKeyboardModifierMappingDst = 12;                                  
            HIDKeyboardModifierMappingSrc = 10;                                  
        },                                                                       
                {                                                                
            HIDKeyboardModifierMappingDst = 2;                                   
            HIDKeyboardModifierMappingSrc = 4;                                   
        },                                                                       
                {                                                                
            HIDKeyboardModifierMappingDst = 10;                                  
            HIDKeyboardModifierMappingSrc = 12;                                  
        })'


else
    echo "Switching to default modifiers"
    defaults -currentHost delete -g $mappingplist
fi

El script toma un argumento, si el el argumento es emacs, entonces swaps comando y control, si el argumento es otra cosa que restaura la los valores predeterminados.

http://forums.macrumors.com/showthread.php?t=949280

La esperanza de que funciona!

3voto

Oppositional Puntos 5966

Usted puede utilizar KeyRemap4MacBook con el PCKeyBoardHack. También permite el uso de Emacs claves en cualquier aplicación de Mac, incluyendo aquellos que no utilizan el Cacao, tales como aplicaciones de MS.

2voto

De apple.stackexchange.com/questions/13598/updating-modifier-key-mappings-through-defaults-command-tool:

defaults -currentHost write -g com.apple.keyboard.modifiermapping.1133-50475-0 -array '<dict><key>HIDKeyboardModifierMappingSrc</key><integer>0</integer><key>HIDKeyboardModifierMappingDst</key><integer>2</integer></dict>'

Cambio 1133 y 50475 para el vendedor y el Id de producto que se muestra por ioreg -n IOHIDKeyboard -r. src 0 y dst -1 podría desactivar el bloqueo de mayúsculas.

defaults -currentHost write -g modifica ~/Library/Preferences/ByHost/.GlobalPreferences.*.plist.

Usted tiene que cerrar la sesión y volver a iniciarla para aplicar los cambios. Si los valores son cadenas de texto (como en la respuesta por @pithyless), se muestran los cambios en las Preferencias del Sistema, pero no tienen ningún efecto.

Los valores de las claves:

-1 none
0 caps lock
1 left shift
2 left control
3 left option
4 left command
5 keypad 0
6 help
9 right shift
10 right control
11 right option
12 right command

0voto

SimonW Puntos 113

La combinación de un par de respuestas juntos me ocurrió con este script que parece de trabajo (asignación de bloqueo de mayúsculas a Control).

$ keyboard_id = "$(ioreg -n IOHIDKeyboard -r | grep -e VendorID\" -e ProductID | tr -d \"\|[:blank:] | cut -d\= -f2 | tr '\n' -)"
$ defaults -currentHost write -g "com.apple.keyboard.modifiermapping.${keyboard_id}0" '(
{
  HIDKeyboardModifierMappingDst = 2;
  HIDKeyboardModifierMappingSrc = 0;
})'

El único problema que no parece tener ningún efecto... :(

Voy a actualizar si puedo conseguir que funcione.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X