-- UI Scripting Demonstration
--
-- Modify Keyboard System Preferences to swap the Option (Alt) and Command (Windows) keys
-- so their placement on the keyboard matches that of the standard Macintosh keyboard. This
-- will also allow us to change the preferences back so the keys go back to normal
-- when the PC keyboard is disconnected.
on setKeyboard(keyboardType)
tell application "System Events"
get properties
tell process "System Preferences"
-- click "Modifier Keys..." at bottom of Keyboard tab
click button "Modifier Keys…" of tab group 1 of window "Keyboard & Mouse"
if keyboardType is equal to "Macintosh" then
-- click "Restore Defaults" on the sheet
click button "Restore Defaults" of sheet 1 of window "Keyboard & Mouse"
else if keyboardType is equal to "PC" 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"
end if
-- click "OK" to dismiss the sheet
click button "OK" of sheet 1 of window "Keyboard & Mouse"
end tell
end tell
end setKeyboard
-- main script; preset desiredKeyboard to "Macintosh"
set desiredKeyboard to "Macintosh"
-- get users input; we're waiting until selection
display dialog "Which keyboard type?" buttons {"Macintosh", "PC"} default button "Macintosh"
-- set desiredKeyboard to "PC" if they picked "PC"
if button returned of result = "PC" then
set desiredKeyboard to "PC"
end if
-- activate System Preferences
tell application "System Preferences"
activate
set current pane to pane "com.apple.preference.keyboard"
end tell
-- call subroutine with desired keyboard type
setKeyboard(desiredKeyboard)
-- quit from system preferences
tell application "System Preferences"
quit
end tell