Jak zremapować pojedynczy klawisz klawiatury Maca
On 31 grudnia, 2021 by adminJak zremapować jeden klawisz klawiatury Mac OS X na drugi bez użycia żadnych zewnętrznych narzędzi? Czy to w ogóle możliwe bez bycia programistą Maca? Okazuje się, że jest to całkiem proste w nowym macOS X 10.12 Sierra przy użyciu małego utilka o nazwie hidutil
.
Problem
Nie podoba ci się układ twojej klawiatury Maca, lub co gorsza musisz pracować z innym układem w pracy niż masz w domu.W obu przypadkach możesz zainstalować jakieś zewnętrzne narzędzie, które wykona remapping za Ciebie, ale może nie lubisz mieć dodatkowej aplikacji tylko do remappingu jednego klawisza? Mój problem był związany z posiadaniem klawiatury brytyjskiej w domu i amerykańskiej w pracy.Chociaż IMO nie jest problemem przyzwyczaić się do żadnej z nich przełączanie się między nimi na co dzień jest irytujące.Był jeden klawisz w szczególności, który czyni rzeczy trochę trudne z perspektywy dewelopera.Był to klawisz tyldy `.Klawisz tyldy jest umieszczony obok 1/! na klawiaturze amerykańskiej i zastąpiony znakiem sekcji § na klawiaturze brytyjskiej.
Rozwiązanie
Jak się okazuje dla macOS X 10.12 Sierra nie trzeba robić nic więcej niż uruchomienie krótkiego fragmentu kodu, aby dokonać wymaganego remappingu.
Tutaj jest prosty przykład dla problemu, z którym się spotkałem, czyli remapping §/Ł do `/~ key.
hidutil property --set '{"UserKeyMapping": }'
Jak widać musisz umieścić odpowiednie wartości (usage ID) dla HIDKeyboardModifierMappingSrc
i HIDKeyboardModifierMappingDst
, które będziesz musiał znaleźć w tabeli w oficjalnych docs.Co więcej, dla każdego „Usage ID (hex)” będziesz musiał obliczyć bitowe „OR” z 0x700000000
, co jest bardzo proste w większości przypadków, ale jeśli masz z tym trudności, możesz również użyć następującej komendy Bash:
printf '%X\n' "$(( 0x700000000 | 0x64 ))"
Gdzie 0x64
powinno być zastąpione wartością z kolumny „Usage ID (hex)”.
Aby sprawdzić aktualne/efektywne mapowania możesz uruchomić:
hidutil property --get "UserKeyMapping"
I ostatnie, ale nie mniej ważne. Aby zresetować wszystko, co do tej pory ustawiłeś, po prostu wykonaj:
hidutil property --set '{"UserKeyMapping": }'
NOTE
Wszystkie zmiany dokonane za pomocą
hidutil
są natychmiastowe, więc nie musisz niczego uruchamiać ponownie.
Automatycznie ustaw niestandardowe mapowanie klawiszy po każdym restarcie
Utwórz plik plist, np. /Library/LaunchDaemons/org.custom.keyboard-remap.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>org.custom.keyboard-remap</string> <key>ProgramArguments</key> <array> <string>/usr/bin/hidutil</string> <string>property</string> <string>--set</string> <string>{"UserKeyMapping": }</string> </array> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <false/> </dict></plist>
Następnie załaduj go za pomocą sudo launchctl load -w /Library/LaunchDaemons/org.custom.keyboard-remap.plist
, aby był ładowany przy każdym ponownym uruchomieniu systemu.
Jeśli chcesz sprawdzić, czy plik plist został pomyślnie załadowany, możesz użyć sudo launchctl list | grep org.custom.keyboard-remap.plist
.
NOTEAAby wyładować plik plist z autostartu systemu użyj
sudo launchctl unload /Library/LaunchDaemons/org.custom.keyboard-remap.plist
Zagadnienia
Mam tylko jedno zagadnienie z tym problemem, którym było znalezienie odpowiedniego „Usage ID (hex)” dla znaku sekcji § key.Jak się okazuje został on nazwany w dokumentach Apple jako Keyboard Non-US \ i |.Aby się tego dowiedzieć użyłem metody prób i błędów, więc nic wymyślnego.Jeśli natkniesz się na jakiś lepszy sposób znalezienia kodów „Usage ID (hex)” proszę podziel się.
W przypadku otrzymania komunikatu błędu Invalid property list
po załadowaniu pliku plist najprawdopodobniej próbujesz użyć starej składni pliku plist z <key>Program</key>
zamiast wspomnianego <key>ProgramArguments</key>
.
Źródła
- https://developer.apple.com/library/archive/technotes/tn2450/_index.html – uwaga techniczna Apple dotycząca remappingu klawiszy w macOS X Sierra
- https://apple.stackexchange.com/questions/283252/how-do-i-remap-a-key-in-macos-sierra-e-g-right-alt-to-right-control – temat na Stack Overflow na ten temat
- https://en.wikipedia.org/wiki/British_and_American_keyboards – możliwe układy klawiatury
- https://apple.stackexchange.com/questions/329085/tilde-and-plus-minus-%C2%B1-in-wrong-place-on-keyboard – dokładnie ten sam temat znaleziony po napisaniu tego posta
.
Dodaj komentarz