macosapplescriptmacos-sierrasystem-preferences

Dictation settings with AppleScript


I'm trying to create an an AppleScript to turn dictation on or off (not just make it start listening). My goal is to be able to disable dictation when I am on battery power. I am new to AppleScript and don't know how to do this. I need this to work on macOS Sierra.


Solution

  • I found my answer!

    Here is my code if somebody wants it:

    set quitting to 0
    delay 1
    repeat until quitting is 1
        set PowerSource to (do shell script "pmset -g ps")
        repeat until PowerSource does not contain "AC Power" or quitting is 1
            set PowerSource to (do shell script "pmset -g ps")
        end repeat
        --START
        tell application "System Events"
            set ProcessList to name of every process
            if "System Prefrences" is in ProcessList then
                set ThePID to unix id of process "System Prefrences"
                do shell script "kill -KILL " & ThePID
            end if
        end tell
    
        tell application "System Preferences"
            activate
            set the current pane to pane id "com.apple.preference.keyboard"
        end tell
        tell application "System Events"
            --Part 1:
            tell process "System Preferences"
                --Part 2:
                delay 1
                --Part 3:
                tell application "System Events" to tell radio button "Dictation" of tab group 1 of window "Keyboard" of application process "System Preferences" of application "System Events" to if exists then click
                tell application "System Events" to tell radio button "Off" of radio group 1 of tab group 1 of window "Keyboard" of application process "System Preferences" of application "System Events" to if exists then click
            end tell
        end tell
        tell application "System Preferences" to quit
        display notification "Hey siri is now off."
        --END
        repeat until PowerSource contains "AC Power" or quitting is 1
            set PowerSource to (do shell script "pmset -g ps")
        end repeat
        --START
        tell application "System Events"
            set ProcessList to name of every process
            if "System Prefrences" is in ProcessList then
                set ThePID to unix id of process "System Prefrences"
                do shell script "kill -KILL " & ThePID
            end if
        end tell
    
        tell application "System Preferences"
            activate
            set the current pane to pane id "com.apple.preference.keyboard"
        end tell
        tell application "System Events"
            --Part 1:
            tell process "System Preferences"
                --Part 2:
                delay 1
                --Part 3:
                tell application "System Events" to tell radio button "Dictation" of tab group 1 of window "Keyboard" of application process "System Preferences" of application "System Events" to if exists then click
                tell application "System Events" to tell radio button "On" of radio group 1 of tab group 1 of window "Keyboard" of application process "System Preferences" of application "System Events" to if exists then click
            end tell
        end tell
        tell application "System Preferences" to quit
        display notification "Hey siri is now on."
        --END
    end repeat
    on quit
        set quitting to 1
        continue quit
    end quit
    

    Just open it in script editor and compile it into an application. Then launch the application. Hope this helps!