To jest uzupełnienie odpowiedzi Stevena C. Howella.
Mam nowego MacBooka Pro ze skandynawską klawiaturą. Ten nowy model nie ma już klawisza Esc, co jest dla mnie znaczącym utrudnieniem.
Odkryłem, że następujące słowa będą tłumaczyć klawisz § (lewy górny, lewy 1 i powyżej klawisza tab) - co, jak sądzę, nigdy wcześniej nie używałem do niczego - do utworzenia Esc.
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'
W dokumentacji Apple'a (połączonej z odpowiedzią Stevena) jest to oznaczone jako „Klawiatura poza USA \ i |” (0x64).
Kilka „nie-amerykańskich” klawiszy jest trudnych do wykrycia, ponieważ zazwyczaj odnoszą się do klawiszy, które mają inną etykietę na używanej klawiaturze. (Odkryłem również, że „poważny akcent i tylda” odnosi się do klawisza między lewym shiftem a z, który wytwarza się na mojej klawiaturze <. Nie byłem w stanie ustalić, który klawisz odpowiada „Non-US #and ~” i nie eksperymentowałem dalej, gdy znalazłem mój klucz.) Jeśli chcesz eksperymentować, spróbuj uruchomić skrypt w terminalu, aż znajdziesz klucz, którego potrzebujesz:
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
Powoduje to zapętlenie klawiszy i zmienia je pojedynczo, w nadziei, że dzięki próbom i błędom znajdziesz klucz, który nie jest szczególnie przydatny. Spróbuj wpisać coś, gdy o to poprosi - jeśli otrzymasz gzamiast tego, czego się spodziewałeś, znalazłeś odpowiedni kod klucza. (Zmień 0x70000000ana coś innego, jeśli gnie jest to dla ciebie wygodny wybór. Może chcesz ponownie przypisać gklucz?) Po zakończeniu pisania naciśnij Enter, aby przejść do następnego klawisza.
Jeśli chodzi o wartość, ostatnim poleceniem w pętli jest sposób zapełniania wszystkich UserKeyMappingustawień:
hidutil property --set '{"UserKeyMapping":[{}]}'
Po uruchomieniu uruchamia hidutil property --get UserKeyMappingsię
(null)
ale wygląda na to, że nie możesz podać tej wartości, aby zmienić ustawienie (a raczej akceptuje, ale ignoruje to wejście).
(Jeśli nie jesteś zaznajomiony z terminalem, po prostu skopiuj / wklej rzecz od fordo momentu, gdy zostaniesz doneo to bash$poproszony lub podobny.)
Zgodnie z tym powiązanym pytaniem Przepełnienie stosu możesz umieścić polecenie w pliku skryptu w katalogu domowym i dodać je do launchdkonfiguracji, aby ta zmiana była trwała.
W przypadku, gdy niektórzy czytelnicy nie czują się komfortowo, robiąc to samodzielnie, oto krótki skrypt, który zrobi to za Ciebie. Ponownie po prostu skopiuj / wklej to w wierszu polecenia Terminal.
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
Oczywiście, jeśli skończyłeś z innym kluczem niż 0x700000064musisz to zmienić w skrypcie lub w pliku, "$HOME"/bin/userkeymappingto kończy się tworzenie, jeśli już uruchomiłeś powyższe.