87 votos

¿Cómo puedo reasignar una tecla en MacOS Sierra, por ejemplo, Alt derecho a Control derecho?

Solía utilizar Mosquetón para reasignar Alt derecho a Control derecho (como usuario de Emacs uso Control MUCHO más que Alt) pero la actualización a Sierra lo rompió. Bajar de categoría no es una opción.

¿Cómo puedo reasignar manualmente las teclas en Sierra? En concreto, me gustaría reasignar Alt derecha a Control derecha.

83voto

stvn66 Puntos 123

Nota técnica de Apple TN2450 describe cómo reasignar las teclas. Ejecutando el siguiente comando se reasignará la tecla Alt derecha a Control derecho.

hidutil property --set '{"UserKeyMapping":
    [{"HIDKeyboardModifierMappingSrc":0x7000000e6,
      "HIDKeyboardModifierMappingDst":0x7000000e4}]
}'

Tenga en cuenta que el comando anterior no está cambiando el Alt derecho y el Control derecho. Ambos serán Control Derecho. Si tienes un MacBook, no notarás esto hasta que conectes un teclado externo. Si quiere cambiar Alt Derecha y Control Derecha, necesitas añadir un segundo comando de cambio, como el siguiente.

hidutil property --set '{"UserKeyMapping":
    [{"HIDKeyboardModifierMappingSrc":0x7000000e4,
      "HIDKeyboardModifierMappingDst":0x7000000e6},
     {"HIDKeyboardModifierMappingSrc":0x7000000e6,
      "HIDKeyboardModifierMappingDst":0x7000000e4}]
}'

La tabla al final de la Nota Técnica tiene una lista de valores hexadecimales para cada tecla. Para generalizar la respuesta anterior para cambiar cualquier tecla, debe or el valor hexadecimal de esa lista junto con 0x700000000 . El siguiente código de Python demuestra una forma de hacerlo.

In [1]: def convert(val):
   ...:     int_val = int(val, 16)
   ...:     int_ref = 0x700000000
   ...:
   ...:     return hex(int_ref | int_val)
   ...:

In [2]: r_alt = '0xE6'

In [3]: print(convert(r_alt))
0x7000000e6

0 votos

Bien, gracias. ¿Hay alguna manera de restaurar las asignaciones a sus valores predeterminados con este comando?

2 votos

@C para restablecer cualquier clave, simplemente se ejecuta el comando de nuevo con el valor de esa clave en ambos Src y Dst .

1 votos

Esto se revierte al reiniciar. Puedo volver a ejecutar este comando en cada arranque, pero preferiría no hacerlo. ¿Hay alguna manera de hacer esto permanente?

36voto

mitchellhislop Puntos 121

Un enfoque más general y fácil de usar es utilizar Karabiner-Elements que es una versión de Karabiner que funciona en Sierra.

2 votos

Actualización rápida sobre Karabiner-Elements . Funciona en MacOS High Sierra 10.13.3 (17D102) He intercambiado con éxito mis teclas de Comando y Opción derecha.

0 votos

Las aplicaciones de terceros nunca son "más generales". ¿Por qué iba alguien a saturar su sistema con aplicaciones que hacen cosas que están integradas en el sistema operativo?

2 votos

@Bachsau es más general en el sentido de que permite hacer muchas otras cosas, por ejemplo, configurar combinaciones de teclas, macros y perfiles, o utilizar configuraciones de mapeo compartido y/o dividido para cualquier teclado interno y externo.

19voto

alex111 Puntos 55

Esta es una adición a la respuesta de Steven C. Howell.

Tengo un nuevo MacBook Pro con un teclado escandinavo. Este nuevo modelo ya no tiene la tecla Esc, lo que supone una importante desventaja para mí.

Descubrí que lo siguiente traducirá la tecla § (arriba a la izquierda, a la izquierda del 1 y arriba del tabulador) - que creo que nunca he usado para nada antes de hoy - para producir Esc.

hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'

En la documentación de Apple (enlazada desde la respuesta de Steven) esto está etiquetado como "Keyboard Non-US \ and |" (0x64).

Varias de las teclas "no estadounidenses" son difíciles de descubrir porque suelen referirse a teclas que tienen una etiqueta diferente en el teclado que estás utilizando. (También descubrí que "acento grave y tilde" se refiere a la tecla entre la mayúscula izquierda y la z, que en mi teclado produce < . No he podido establecer qué tecla corresponde a "No estadounidense". # y ~ " y no experimenté más una vez que encontré mi clave). Si quieres experimentar, intenta ejecutar el script en la terminal hasta que encuentres la clave que necesitas:

for ((i=1;i<=128;++i)); do
    printf '0x7000000%0x\n' "$i"
    printf '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x7000000%0x,"HIDKeyboardModifierMappingDst":0x70000000a}]}' "$i" |
    xargs -0 hidutil property --set >/dev/null
    read -p "Type some stuff: "
    hidutil property --set '{"UserKeyMapping":[{}]}' >/dev/null
done

Esto hace un bucle sobre los códigos clave y los cambia de uno en uno, con la esperanza de que pueda encontrar a través de la prueba y el error una clave que no es particularmente útil para usted. Intenta escribir algo cuando te lo pida -- si obtienes un g en lugar de lo que esperaba, ha encontrado el código clave correcto. (Cambiar 0x70000000a a otra cosa si g no es una opción conveniente para usted. Tal vez quiera reajustar el g ). Cuando termine de escribir, sólo tiene que pulsar Enter para pasar a la siguiente tecla.

Por si sirve de algo, el último comando dentro del bucle es la forma en que se eliminan todos los UserKeyMapping ajustes:

hidutil property --set '{"UserKeyMapping":[{}]}'

Cuando se ejecuta inicialmente hidutil property --get UserKeyMapping produce

(null)

pero parece que no se puede retroalimentar este valor para zapar el ajuste (o más bien, acepta pero ignora esta entrada).

(Si no estás familiarizado con el Terminal, sólo tienes que copiar y pegar la cosa desde for hasta done en su bash$ o similar).

Según esta pregunta relacionada con Stack Overflow puedes poner el comando en un archivo script en tu directorio principal y añadirlo a tu launchd para que este cambio sea persistente.

En caso de que algunos lectores no se sientan cómodos haciendo esto por su cuenta, aquí hay un rápido script que lo hace por ti. Una vez más, sólo tienes que copiar/pegar esto en el prompt de la Terminal.

mkdir -p ~/bin
printf '%s\n' '#!/bin/sh' \
    'hidutil property --set '"'"'{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'"'" \
    >~/bin/userkeymapping
chmod 755 ~/bin/userkeymapping
mkdir -p ~/Library/LaunchAgents
cat<<: >~/Library/LaunchAgents/userkeymapping.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>userkeymapping</string>
    <key>ProgramArguments</key>
    <array>
        <string>$HOME/bin/userkeymapping</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>
:
launchctl load ~/Library/LaunchAgents/userkeymapping.plist

Obviamente, si usted terminó con alguna otra llave que 0x700000064 debe cambiarlo en el script, o en el archivo ~/bin/userkeymapping acaba creando si ya has ejecutado lo anterior.

1 votos

Una versión anterior de esta respuesta defendía el uso de LoginHook pero no me funcionaba, y basándome en stackoverflow.com/a/22872222/874188 Me cambié a un launchd en su lugar.

1 votos

Como ferviente aficionado al vi/vim, esto es precisamente lo que estaba buscando. Gracias.

0 votos

I creer esto debería funcionar con zsh también, pero sigo desconcertado por el hecho de que Apple haya cambiado a este malvado shell como el predeterminado para los nuevos usuarios.

16voto

un5t0ppab13 Puntos 101

Si todo lo que quieres hacer es reasignar una sola tecla

Ejemplo: Cómo reasignar la tecla Escape en Mac

  1. Vaya al menú de Apple y elija "Preferencias del Sistema" y luego vaya al panel de preferencias "Teclado" y elige la pestaña "Teclado".

  2. Haga clic en el botón "Teclas modificadoras" en la esquina inferior derecha

  3. Elige la tecla que quieras reasignar y modificar para que realice la función de Escape: Bloqueo de mayúsculas (nuestra recomendación), Control, Opción o Comando

  4. Seleccione "Escape" en la lista desplegable correspondiente a la tecla que desea reasignar como tecla de escape de hardware y, a continuación, haga clic en "Aceptar" para establecer el cambio

referencia

7 votos

Esto sólo le permite controlar las cuatro claves que se enumeran en esta respuesta.

1 votos

Correcto, y muy útil. Si alguien quiere reasignar llaves adicionales considere karabiner

1 votos

Parece que tampoco hay forma de especificar una clave concreta, como "derecha". Lo más específico que se puede conseguir es la señal, como en "any ".

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