Questa è un'aggiunta alla risposta di Steven C. Howell.
Ho un nuovo MacBook Pro con una tastiera scandinava. Questo nuovo modello non ha più un tasto Esc, che per me è un handicap significativo.
Ho scoperto che ciò che segue tradurrà il tasto § (in alto a sinistra, a sinistra di 1 e sopra il tasto tab) - che non credo di aver mai usato prima di oggi - per produrre Esc.
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'
Nella documentazione di Apple (collegata dalla risposta di Steven) questa è etichettata come "Tastiera non statunitense \ e |" (0x64).
Molti dei tasti "non statunitensi" sono difficili da scoprire perché in genere si riferiscono a tasti con un'etichetta diversa sulla tastiera in uso. (Ho anche scoperto che "Accento grave e tilde" si riferisce al tasto tra shift sinistro e z, che sulla mia tastiera produce <
. Non sono stato in grado di stabilire quale tasto corrisponda a "Non-USA #
e ~
" e non ho sperimentato ulteriormente una volta trovato la mia chiave.) Se vuoi sperimentare, prova a eseguire lo script nel terminale fino a trovare la chiave che ti serve:
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
Questo passa sopra i codici chiave e cambia uno alla volta, nella speranza che tu possa trovare attraverso la prova e l'errore una chiave che non è particolarmente utile per te. Prova a digitare qualcosa quando ti viene chiesto: se ottieni un valore diverso g
da quello che ti aspettavi, hai trovato il codice chiave giusto. (Passa 0x70000000a
a qualcos'altro se g
non è una scelta conveniente per te. Forse vuoi rimappare il g
tasto?) Quando hai finito di digitare, premi Invio per passare al tasto successivo.
Per quello che vale, l'ultimo comando all'interno del loop è come zapping tutte le UserKeyMapping
impostazioni:
hidutil property --set '{"UserKeyMapping":[{}]}'
Quando si esegue inizialmente hidutil property --get UserKeyMapping
produce
(null)
ma sembra che non sia possibile restituire questo valore per eseguire lo zapping dell'impostazione (o meglio, accetta ma ignora questo input).
(Se non si ha familiarità con il Terminale, è sufficiente copiare / incollare l'oggetto da for
fino done
a quando bash$
richiesto o simile.)
In base a questa domanda Stack Overflow correlata è possibile inserire il comando in un file di script nella directory home e aggiungerlo alla launchd
configurazione per rendere persistente questa modifica.
Nel caso in cui alcuni lettori non si sentano a proprio agio nel fare questo da soli, ecco una breve sceneggiatura che lo fa per te. Ancora una volta, basta copiarlo / incollarlo al prompt del Terminale.
mkdir -p "$HOME"/bin
printf '%s\n' '#!/bin/sh' \
'hidutil property --set '"'"'{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'"'" \
>"$HOME"/bin/userkeymapping
chmod 755 "$HOME"/bin/userkeymapping
cat<<: >"$HOME"/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 "$HOME"/Library/LaunchAgents/userkeymapping.plist
Ovviamente se hai finito con qualche chiave diversa 0x700000064
da quella che devi cambiare nello script, o nel file "$HOME"/bin/userkeymapping
finisce per creare se hai già eseguito quanto sopra.