I get in Script Debugger the following error message:
System Events got an error: Script Debugger is not allowed to send keystrokes.
Although I did tick the box "System Events" below "Script Debugger" in the "Automation" item of the "Privacy" menu in "Security and Privacy settings"
I unticked the box, restarted my laptop, ticked again the box, restarted my laptop again. My version of "Script Debugger" is 7.0.5 it's a trial license
tell application "System Events"
keystroke tab
end tell
tell application "System Events"
key code 53
end tell
both report the same error message
Add accessibility permission to Script Editor under:
System Preferences > Security & Privacy > Privacy > Accessibility
Related
i got the following problem: i try to toggle the color filter grayscale automatically when using certain websites (to limit the use of those ;)).
I tried several things, however I'm quite new to using Terminal, so that I basical have no clue what i'm doing wrong.
I found an explenation which did not work for me here (https://apple.stackexchange.com/questions/240446/how-to-enable-disable-grayscale-mode-in-accessibility-via-terminal-app?rq=1), however I'm not sure what I'm doing wrong.
I applied the following implementation:
I used the code below in MacOS Automator with the function "Run Apple Script". I gave the terminal as well as the automator the access to the accessibility features via the Security Settings. When using the script an error occures. It states (i had to translate it from Germany, thus the wording might be not 100% correct) „System Settings“ return an Erro: Error in the AppleEvent-Routine.
if running of application "System Preferences" then
try
tell application "System Preferences" to quit
on error
do shell script "killall 'System Preferences'"
end try
end if
repeat while running of application "System Preferences" is true
delay 0.01
end repeat
tell application "System Preferences" to reveal anchor "Seeing_Display" of ¬
pane id "com.apple.preference.universalaccess"
tell application "System Events" to tell process "System Preferences"
repeat until exists checkbox "Use grayscale" of group 1 of ¬
window "Accessibility"
delay 0.01
end repeat
click the checkbox "Use grayscale" of group 1 of window "Accessibility"
end tell
tell application "System Preferences" to quit
Thank you for helping me out.
Best
First, manually go to
system settings -> accessibility -> display
and set the "Filter type" to Greyscale (you only have to do this once).
Once you have done that, here are 2 shortcuts that do what you want:
option-command-F5
quick-press fingerprint key 3 times.
I am trying to select the third checkbox of the Keyboard menu item and tab to change the basic fn key function with one run of the script. The rest of the code appears to work fine, but I just recently started trying to code at all so I have no idea.
Here is my current code:
tell application "System Preferences"
activate
set current pane to pane id "com.apple.preference.keyboard"
delay 1
tell application "System Events"
tell (click checkbox 3 of tab group 1)
delay 2
end tell
end tell
end tell
tell application "System Preferences" to quit
And here is the error message:
error "System Events got an error: Can’t get tab group 1." number -1728 from tab group 1
It looks like I'm just not defining it correctly, but I can't find out how to. Any help is appreciated!
Also, this is not needed but would it be possible to run the script without visibly opening the System Preferences application?
The following example AppleScript code was tested under macOS Catalina and clicks the Turn keyboard backlight off after checkbox at: System Preferences > Keyboard > Keyboard
As coded, it does the following:
Checks to see if System Preferences is running and if it is, it closes it so as to not have to see the UI flashing thru the different panes.
If System Preferences is not running it opens to the target anchor/pane without showing the UI.
Clicks the target checkbox.
Closes System Preferences
Example AppleScript code:
if running of application "System Preferences" then
try
tell application "System Preferences" to quit
on error
do shell script "killall 'System Preferences'"
end try
delay 0.1
end if
repeat while running of application "System Preferences" is true
delay 0.1
end repeat
tell application "System Preferences" to ¬
reveal anchor "keyboardTab" of pane id ¬
"com.apple.preference.keyboard"
tell application "System Events"
tell front window of application process "System Preferences"
repeat until (exists checkbox 3 of tab group 1)
delay 0.01
end repeat
click checkbox 3 of tab group 1
delay 0.1
end tell
end tell
tell application "System Preferences" to quit
Note: The example AppleScript code is just that and sans any included error handling, does not contain any additional error handling as may be appropriate. The onus is upon the user to add any error handling as may be appropriate, needed or wanted. Have a look at the try statement and error statement in the AppleScript Language Guide. See also, Working with Errors. Additionally, the use of the delay command may be necessary between events where appropriate, e.g. delay 0.5, with the value of the delay set appropriately.
I want to issue a keyboard command to toggle the checkbox "Change picture every 30 minutes" in OS X for Desktop 1 (my main monitor desktop). I have multiple monitors so it may be necessary to identify which particular preference pane to manipulate.
I have set up the start of an AppleScript, but I'm at a loss how to formulate how to identify this particular check box:
tell application "System Preferences"
activate
end tell
tell application "System Events"
tell process "System Preferences"
click menu item "Desktop & Screen Saver" of menu "View" of menu bar 1
delay 2
tell window "Desktop & Screen Saver"
click checkbox 1 of …
It's in tab group 1. You can recognize this with the help of the Xcode tool Accessibility Inspector (Xcode > Open Developer Tool > Accessibility Inspector in the menu bar or Dock).
tell application "System Preferences"
activate
set the current pane to pane id "com.apple.preference.desktopscreeneffect"
end tell
delay 2
tell application "System Events" to tell process "System Preferences"
click checkbox "Change picture:" of tab group 1 of window "Desktop & Screen Saver"
end tell
I am using AppleScript to create a script that will turn on "Remote Login" in the System Preferences without the actual window opening.
Below is my code that is working but still opens the System Preferences window, therefore I can see exactly what it is doing:
tell application "System Preferences" to launch
tell application "System Preferences" to set current pane to pane "com.apple.preferences.sharing"
tell application "System Events" to set visible of process "System Preferences" to false
tell application "System Events" to tell process "System Preferences"
click checkbox 1 of row 5 of table 1 of scroll area 1 of group 1 of window "Sharing"
tell application "System Preferences"
quit
end tell
end tell
I have tried various lines such as:
tell application "System Events" to set visible of process "System Preferences" to false
but it still doesn't give me the result I want.
My question is, is there a line(s) I can write that can hide the window while it does this process? Thanks.
You can avoid to open System Preferences, you can start ssh (Remote Login) from the shell, so the AppleScript command will be:
do shell script "launchctl load -w /System/Library/LaunchDaemons/ssh.plist" user name (short user name of (system info)) password "currentuserpasssord" with administrator privileges
replace the currentuserpassword with the password of the current user, that is required to be an administrator.
I hardly ever use the function keys on my macbook pro. I mostly just use them for volume, brightness, etc. Now that I've started playing Starcraft 2 a bunch, I want to use them without having to press the fn key down.
I want to write a little shell script that will flip the "Use all F1, F2, etc keys as standard function keys" check box. I was thinking I could use the defaults command to change it but I wasn't sure what values to use. This way I don't have to change the the preferences every time I want to play. I can just run the script that'll switch the keys and even launch the game.
Any ideas?
An AppleScript that should do the trick -- taken from http://scriptbuilders.net/files/fn1.1.html, with slight modifications
--Check if GUI Scripting is Enabled
tell application "System Events"
if not UI elements enabled then
set UI elements enabled to true
end if
end tell
--Enable/Disable "Use all F1, F2, etc. keys as standard function keys" option in Keyboard & Mouse Preference pane and close System Preferences
tell application "System Events"
tell application "System Preferences"
reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
end tell
click checkbox 1 of tab group 1 of window 1 of application process "System Preferences"
end tell
if application "System Preferences" is running then
tell application "System Preferences" to quit
end if
Tested on MacOS 10.6.4
The command is defaults write -g com.apple.keyboard.fnState, although I've had problems in the past changing it. I ended up just using an AppleScript. Give it a try.
defaults write -g com.apple.keyboard.fnState -boolean true
EditTo elaborate, the problems I've had is that the actual value is changed, but it doesn't actively change the setting in System Preferences nor does the fnState toggle, because the file is only read at boot/login etc. Also, making changes to a config file that's opened by another task sounds like a good way to corrupt the file.
You can install the awsome Karabiner-Elements.
Under System Preferences-> Keyboard preferences, make sure "Use all F1, F2, etc. keys as standard function keys" is checked as a perquisites.
Open KeyRemap4MacBook preferences.
Navigate to "Pass Through Mode" option.
Check the 'Change Fn+Escape to toggle "Pass Through Mode"'
Open "Change F1..F19 Key" and check the "Macbook Pro" or "Macbook Air" option choosing your correct mac type.
For anyone else trying to make this work - I've finally gotten my solution to work. Tested with: MacOS Big Sur, 11.4, June 2021.
The code is based here:
https://github.com/MrSimonC/Toggle-Mac-Function-Keys
but for brevity, here is the contents of the apple script file:
-- Apple Script (i.e. Use in Apple's Script Editor Application) to Toggle Function Keys / Media keys on/off
-- Tested on MacOS Big Sur (11.4) June 2021
-- Project Path: https://github.com/MrSimonC/Toggle-Mac-Function-Keys
tell application "System Preferences"
set current pane to pane "com.apple.preference.keyboard"
end tell
tell application "System Events"
if UI elements enabled then
tell application process "System Preferences"
repeat until exists tab group 1 of window "Keyboard"
delay 0.5
end repeat
click radio button "Keyboard" of tab group 1 of window "Keyboard"
click checkbox "Use F1, F2, etc. keys as standard function keys" of tab group 1 of window "Keyboard"
end tell
tell application "System Preferences" to quit
else
-- GUI scripting not enabled. Display an alert
tell application "System Preferences"
activate
set current pane to pane "com.apple.preference.security"
display dialog "UI element scripting is not enabled. Please activate this app under Privacy -> Accessibility so it can access the settings it needs."
end tell
end if
end tell
Hope someone finds it useful!