I’ve been switching between my Macbook Pro’s internal keyboard and an external Microsoft Natural keyboard fairly regularly, so the reversed option/command key problem has been a pretty constant thorn in my side. I couldn’t get the 10.4: Change keymapping only on external keyboards hint to work (I probably just need to clear some of those kernel caches after changing the mapping), so I finally got pissed off enough to write an AppleScript to help. That way, I only need to worry about the switched keys for one Quicksilver call. 🙂
tell application "System Preferences" activate set current pane to pane "com.apple.preference.keyboard" end tell tell application "System Events" get properties tell application process "System Preferences" click button "Modifier Keys…" of tab group 1 of window "Keyboard & Mouse" set commandKey to value of pop up button 3 of sheet 1 of window "Keyboard & Mouse" -- DEBUG -- display dialog commandKey -- Default, lets flip if commandKey ends with "Option" then -- click the pop up button menu "Option", this menu does not exist until it is clicked in the GUI click pop up button 3 of sheet 1 of window "Keyboard & Mouse" -- click "Command" of the pop up menu click menu item 4 of menu 1 of pop up button 3 of sheet 1 of window "Keyboard & Mouse" -- delay briefly delay 1 -- click the pop up button menu "Command", this menu does not exist until it is clicked in the GUI click pop up button 4 of sheet 1 of window "Keyboard & Mouse" -- click "Option" of the pop up menu click menu item 3 of menu 1 of pop up button 4 of sheet 1 of window "Keyboard & Mouse" -- Not Default, lets flip it back else click button "Restore Defaults" of sheet 1 of window "Keyboard & Mouse" end if -- click "OK" to dismiss the sheet click button "OK" of sheet 1 of window "Keyboard & Mouse" end tell end tell tell application "System Preferences" to quit
As always, looking up what objects/properties to call is suitably obscure, but I think I’m getting better at this.