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 g
zamiast tego, czego się spodziewałeś, znalazłeś odpowiedni kod klucza. (Zmień 0x70000000a
na coś innego, jeśli g
nie jest to dla ciebie wygodny wybór. Może chcesz ponownie przypisać g
klucz?) 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 UserKeyMapping
ustawień:
hidutil property --set '{"UserKeyMapping":[{}]}'
Po uruchomieniu uruchamia hidutil property --get UserKeyMapping
się
(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 for
do momentu, gdy zostaniesz done
o 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 launchd
konfiguracji, 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ż 0x700000064
musisz to zmienić w skrypcie lub w pliku, "$HOME"/bin/userkeymapping
to kończy się tworzenie, jeśli już uruchomiłeś powyższe.