49 votos

La tilde (~) y el signo más-menos (±) en el lugar equivocado del teclado

Estoy usando un MacBook Pro con un teclado físico sueco, pero con la distribución estadounidense definida en los Preferentes del Sistema. Sin embargo, la tilde ( ~ ) y más-menos ( ± ) parecen estar cambiadas. La siguiente combinación de teclas debería producir un ~ :

enter image description here

Porque el mapeo en System Prefs lo dice:

enter image description here

Pero el resultado es un ± símbolo.

Parece que estas dos llaves ( ± y ~ ) están cambiados de alguna manera. ¿Cómo puedo hacer que funcionen como se muestra en las Preferencias del Sistema?

90voto

CBlew Puntos 241

He aquí una solución que no utiliza ninguna herramienta externa.

Ejecuta esto en Terminal.app:

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

Ahora intente su ~ y ± teclas: hay que cambiarlas de sitio.

El problema es que esta solución sólo funcionará hasta el siguiente reinicio. Para que sea permanente, hay que ejecutarlo automáticamente al cargar el sistema.

Puedes hacerlo con tres comandos de Terminal.app:

  1. cat << 'EOF' > ~/.tilde-switch && chmod +x ~/.tilde-switch hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000035,"HIDKeyboardModifierMappingDst":0x700000064},{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000035}]}' EOF

    (Todo esto es un solo comando). Esto almacena el script de arriba en un archivo ejecutable invisible en su directorio personal, ~/.tilde-switch .

  2. sudo /usr/bin/env bash -c "cat > /Library/LaunchDaemons/org.custom.tilde-switch.plist" << EOF <?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>org.custom.tilde-switch</string> <key>Program</key> <string>${HOME}/.tilde-switch</string> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <false/> </dict> </plist> EOF

    (Todo esto es un solo comando). Esto crea una tarea del sistema: "ejecutar el archivo del paso 1 en cada inicio".

  3. sudo launchctl load -w -- /Library/LaunchDaemons/org.custom.tilde-switch.plist

    Esto carga (activa) la tarea del paso 2.

Los pasos 2 y 3 le pedirán su contraseña. Y ahora, su ~ y ± las teclas están permanentemente conmutadas.

Nota 1

Esto parece funcionar no sólo en el teclado físico interno del MacBook, sino también en los teclados externos.

Nota 2

Para deshacer el cambio script (no los tres pasos), aquí está el script inverso:

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

Nota 3

Para deshacer los tres pasos:

sudo launchctl unload -w -- /Library/LaunchDaemons/org.custom.tilde-switch.plist; sudo rm -f -- /Library/LaunchDaemons/org.custom.tilde-switch.plist ~/.tilde-switch

Crédito

Esta solución se inspira en este artículo:

http://homeowmorphism.com/articles/17/Remap-CapsLock-Backspace-Sierra

28voto

Benny Powers Puntos 6

Utilizando los elementos del mosquetón, puede añadir una "modificación simple" de la siguiente manera:

"Karabiner Elements Preferences" window, "Simple Modifications" tab, "Target Device" dropdown is set to "Apple Internal Keyboard / Trackpad (No manufacturer name)". Two rows are shown in the configuration table. The first row contains "From key": "non_us_backslash", "To key": "grave_accent_and_tilde (<code>)". The second row contains "From key": "grave_accent_and_tilde (</code>)", "To key": "non_us_backslash".

Básicamente, es necesario saber que el nombre del § ( ± ) en la pantalla de configuración de Karabiner es non_us_backslash

En mi caso, utilicé este método específicamente para el teclado incorporado, dejando mis teclados externos sin cambios.

21voto

Antonius Bloch Puntos 111

Aquí está la documentación de Apple con la tabla que contiene todas las claves y los hexágonos correspondientes. https://developer.apple.com/library/archive/technotes/tn2450/_index.html

El estado inicial es que no hay remapeo de teclas activo:

hidutil property --get UserKeyMapping
(null)

Remodelar ~ a §± un camino:

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

Intercambiarlas en ambos sentidos:

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

Para eliminar cualquier reubicación a la inicial sólo hay que pasar un array vacío:

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

4voto

heiner Puntos 111

Construyendo sobre Solución de CBlew En este caso, se puede prescindir del archivo adicional (que no funcionaría tal cual en un sistema multiusuario). Escriba un archivo plist como

<?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>com.example.setkeyboard</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/bin/hidutil</string>
      <string>property</string>
      <string>--matching</string>
      <string>{"VendorID": 5426, "ProductID": 579}</string>
      <string>--set</string>
      <string>{"UserKeyMapping":[{"HIDKeyboardModifierMappingDst":0x7000000e3,"HIDKeyboardModifierMappingSrc":0x7000000e2},{"HIDKeyboardModifierMappingDst":0x7000000e2,"HIDKeyboardModifierMappingSrc":0x7000000e3},{"HIDKeyboardModifierMappingDst":0x7000000e7,"HIDKeyboardModifierMappingSrc":0x7000000e6},{"HIDKeyboardModifierMappingDst":0x7000000e6,"HIDKeyboardModifierMappingSrc":0x700000065}]}</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <false/>
  </dict>
</plist>

y a continuación, configurarlo con sudo launchctl load -w -- /Library/LaunchDaemons/com.example.setkeyboard.plist .

Para generar el hidutil invocación que estoy utilizando este simple script de Python script .

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