51 votes

Tilde (~) et plus-moins (±) au mauvais endroit sur le clavier

J'utilise un MacBook Pro avec un clavier physique suédois, mais avec la disposition américaine définie dans les préférences système. Cependant, le tilde ( ~ ) et plus-moins ( ± ) semblent commutées. La combinaison de touches suivante devrait produire un ~ :

enter image description here

Parce que le mappage dans les Préférences du Système le dit :

enter image description here

Mais il en résulte un ± symbole.

Il semble que ces deux clés ( ± et ~ ) sont échangés d'une manière ou d'une autre. Comment puis-je les faire fonctionner comme indiqué dans les préférences du système ?

91voto

CBlew Points 591

Voici une solution qui ne fait appel à aucun outil externe.

Exécutez ceci dans Terminal.app :

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

Maintenant, essayez votre ~ et ± les clés : il faut les intervertir.

Le problème est que cette solution ne fonctionnera que jusqu'au prochain redémarrage. Pour le rendre permanent, vous devez l'exécuter automatiquement au chargement du système.

Vous pouvez le faire en trois commandes 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

    (Il s'agit d'une seule commande). Cela stocke le script du dessus dans un fichier exécutable invisible dans votre répertoire personnel, ~/.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

    (Il s'agit d'une seule commande). Cela crée une tâche système : "exécuter le fichier de l'étape 1 à chaque démarrage".

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

    Cela charge (active) la tâche de l'étape 2.

Les étapes 2 et 3 vous demanderont votre mot de passe. Et maintenant, votre ~ et ± Les touches sont commutées en permanence.

Note 1

Cela semble fonctionner non seulement sur le clavier physique interne intégré du MacBook, mais aussi sur les claviers externes.

Note 2

Pour défaire le script de commutation (pas les trois étapes), voici le script inverse :

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

Note 3

Pour annuler les trois étapes :

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

Crédit

Cette solution est inspirée de cet article :

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

30voto

Benny Powers Points 303

En utilisant les éléments du mousqueton, vous pouvez ajouter une "modification simple" comme suit :

"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".

Fondamentalement, vous devez savoir que le nom de l'élément § ( ± ) dans l'écran de configuration de Karabiner est le suivant non_us_backslash

Dans mon cas, j'ai utilisé cette méthode spécifiquement pour le clavier intégré, laissant mes claviers externes inchangés.

21voto

gordey4doronin Points 251

Voici la documentation d'Apple avec un tableau contenant toutes les clés et les hexagones correspondants. https://developer.apple.com/library/archive/technotes/tn2450/_index.html

L'état initial est l'absence de remappage actif des touches :

hidutil property --get UserKeyMapping
(null)

Remap ~ a §± dans un sens :

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

Intervertissez-les dans les deux sens :

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

Pour supprimer tous les remappages vers l'initial, il suffit de passer un tableau vide :

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

5voto

heiner Points 171

Construire sur La solution de CBlew On peut se passer de ce fichier supplémentaire (qui ne fonctionnerait pas tel quel pour un système multi-utilisateurs). Ecrivez un fichier plist comme

<?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>

puis le fixer avec sudo launchctl load -w -- /Library/LaunchDaemons/com.example.setkeyboard.plist .

Pour générer le hidutil J'utilise l'invocation ce simple script Python .

2voto

user3575439 Points 1

J'ai eu ce problème en passant à un nouveau macbook (avec clavier externe). J'ai résolu le problème en supprimant ma source d'entrée (dvorak), puis en cliquant sur "Change keyboard type..." et en faisant en sorte que mon clavier externe soit à nouveau identifié (comme ISO european). J'ai ensuite réintroduit ma source d'entrée et les touches ~ et ± ont été interverties et se sont retrouvées à la bonne place.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X