Hur man ändrar en enskild tangentbordstangent på Mac
On december 31, 2021 by adminHur man ändrar en tangentbordstangent på Mac OS X till en annan utan att använda några externa verktyg?Är det ens möjligt att göra det utan att vara Mac-utvecklare?Det visar sig vara ganska enkelt i nya macOS X 10.12 Sierra med hjälp av ett litet verktyg som heter hidutil
.
Problem
Du tycker inte om tangentbordslayouten på din Mac eller, ännu värre, du måste jobba med en annan layout på jobbet än du har hemma.I båda fallen kan du installera ett externt verktyg som gör omläggningen åt dig, men du kanske inte gillar att ha ett extra program bara för att göra omläggningen av en enda tangent?Mitt problem hängde samman med att jag har ett brittiskt tangentbord hemma och ett amerikanskt tangentbord på jobbet.Även om det IMO inte är något problem att vänja sig vid något av dem så är det irriterande att växla mellan dem dagligen.Det fanns en tangent i synnerhet som gör saker och ting lite svårt ur ett utvecklarperspektiv.Det var tilde-tangenten `.Tilde-tangenten är placerad intill 1/! på det amerikanska tangentbordet och ersätts av en sektionstecken §-tangent på det brittiska.
Lösning
Som det visar sig för macOS X 10.12 Sierra behöver du inte göra något mer än att köra en kort bit kod för att göra den nödvändiga remappningen.
Här är ett enkelt exempel på det problem som jag ställdes inför, nämligen ommappning av §/£ till `/~-tangenten.
hidutil property --set '{"UserKeyMapping": }'
Som du kan se måste du placera lämpliga värden (användnings-ID) för HIDKeyboardModifierMappingSrc
och HIDKeyboardModifierMappingDst
, som du måste hitta i en tabell i den officiella dokumentationen.Dessutom måste du för varje ”Usage ID (hex)” beräkna bitvis ”OR” med 0x700000000
, vilket är mycket enkelt i de flesta fall, men om du har problem med det kan du också använda följande Bash-kommando:
printf '%X\n' "$(( 0x700000000 | 0x64 ))"
Varvid 0x64
ska ersättas med ett värde från kolumnen ”Usage ID (hex)”.
För att kontrollera aktuella/effektiva mappningar kan du köra:
hidutil property --get "UserKeyMapping"
Och sist men inte minst. För att återställa allt du har ställt in hittills kör du bara:
hidutil property --set '{"UserKeyMapping": }'
NOTE
Alla ändringar som görs med
hidutil
är omedelbara, så du behöver inte starta om något.
Automatiskt ställa in anpassad tangentmappning efter varje omstart
Skapa plist-fil t.ex. /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>
Lad sedan in den med sudo launchctl load -w /Library/LaunchDaemons/org.custom.keyboard-remap.plist
så att den laddas vid varje omstart av systemet.
Om du vill kontrollera om din plist-fil laddades framgångsrikt kan du använda sudo launchctl list | grep org.custom.keyboard-remap.plist
.
NOTEFör att avlasta plist-filen från systemets autostart använd
sudo launchctl unload /Library/LaunchDaemons/org.custom.keyboard-remap.plist
Saker
Jag har bara ett problem med det här problemet som var att hitta ett lämpligt ”Usage ID (hex)” för sektionstecknet §-nyckeln.Det visade sig att den i Apple-dokumentationen heter Keyboard Non-US \ and |.För att ta reda på det har jag använt trial and error-metoden, så det är inget märkvärdigt.Om du kommer på något bättre sätt att hitta ”Usage ID (hex)”-koder får du gärna dela med dig av dem.
Om du får Invalid property list
felmeddelande efter att du har laddat plist-fil så är det troligen så att du försöker använda den gamla syntaxen för plist-fil med <key>Program</key>
i stället för nämnda <key>ProgramArguments</key>
.
Källor
- https://developer.apple.com/library/archive/technotes/tn2450/_index.html – Apple Technical Note regarding key remapping in 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 – Stack Overflow-ämne om detta
- https://en.wikipedia.org/wiki/British_and_American_keyboards – möjliga tangentbordslayouter
- https://apple.stackexchange.com/questions/329085/tilde-and-plus-minus-%C2%B1-in-wrong-place-on-keyboard – exakt samma ämne som hittades efter att ha skrivit det inlägget
.
Lämna ett svar