Aquí hay un camino desde el línea de comandos en, por ejemplo, Terminal para encender Control de interruptores utilizando un shell script utilizando AppleScript con Guiones de interfaz de usuario para hacer clic de forma programada en el Activar el control del interruptor casilla de verificación en: Preferencias del sistema > Accesibilidad > Control de interruptores
El ejemplo AppleScript código que se muestra a continuación, se probó en script Editor y como ejecutable shell script en Terminal en MacOS Catalina con Lengua y región ajustes en Preferencias del sistema ajustado a Inglés (EE.UU.) - Primaria y me ha funcionado sin problemas 1 .
- 1 Asume los ajustes necesarios y apropiados en <strong>Preferencias del sistema </strong>> <strong>Seguridad y privacidad </strong>> <strong>Privacidad </strong>se han fijado/abordado según las necesidades.
Tenga en cuenta que la codificación en este shell script asume que Control de interruptores se ha encendido previamente de forma manual para responder a la Preferencias del sistema intenta desbloquear las preferencias de accesibilidad cuadro de diálogo donde ha introducido su Nombre de usuario y Contraseña luego hizo clic en el Desbloquear botón.
Después de configurar el shell script y los ajustes de direccionamiento mencionados anteriormente 1 Será tan sencillo como teclear, por ejemplo esc
en, por ejemplo, Terminal para abrir Control de interruptores .
Es Terminal Escriba lo siguiente comando compuesto y a continuación pulse entrar en :
f="esc"; touch "$f"; open -e "$f"; chmod +x "$f"
Copiar y pegar el ejemplo AppleScript código que se muestra a continuación, en el esc documento, (llamado así por [E]nable [S]bruja [C]ontrol ), luego guárdelo y cierre el documento.
A continuación, debe mover el esc
ejecutable shell script a un directorio que figura en la lista de PATH
pasado a la shell . Yo tengo el mío en /usr/local/bin/
.
Ejemplo AppleScript código :
#!/usr/bin/osascript
-- # Check to see if System Preferences is
-- # running and if yes, then close it.
-- #
-- # This is done so the script will not fail
-- # if it is running and a modal sheet is
-- # showing, hence the use of 'killall'
-- # as 'quit' fails when done so, if it is.
-- #
-- # This is also done to allow default behaviors
-- # to be predictable from a clean occurrence.
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
-- # Make sure System Preferences is not running before
-- # opening it again. Otherwise there can be an issue
-- # when trying to reopen it while it's actually closing.
repeat while running of application "System Preferences" is true
delay 0.1
end repeat
-- # Open System Preferences to the Accessibility pane.
tell application "System Preferences" to ¬
reveal pane id "com.apple.preference.universalaccess"
-- # Use System Events to achieve the goal.
tell application "System Events"
tell window 1 of application process "System Preferences"
-- # Wait for target pane to be available.
-- # The target in this case has a checkbox.
my waitForUIelement(checkbox 1)
-- # Ascertain the target row to select.
set rowSwitchControl to the first row of ¬
table 1 of scroll area 1 whose value of ¬
static text 1 of UI element 1 is ¬
"Switch Control"
-- # Select the target row.
select rowSwitchControl
-- # Wait for target checkbox to be available.
my waitForUIelement(checkbox 1 of tab group 1 of group 1)
-- # Click the Enable Switch Control checkbox.
click checkbox 1 of tab group 1 of group 1
end tell
end tell
delay 0.02
quit application "System Preferences"
-- ## Handler(s) ##
on waitForUIelement(uiElement)
tell application "System Events"
tell window 1 of application process ¬
"System Preferences"
set i to 0
repeat until exists uiElement
delay 0.1
set i to i + 1
if i 30 then return
end repeat
end tell
end tell
end waitForUIelement
Notas:
El ejemplo AppleScript código se haga clic en el objetivo casilla de verificación para permitir Control de interruptores Sin embargo, tal y como está codificado no muestra el UI cuando Preferencias del sistema se abre para hacerlo. Como resultado, no se desmarcará el casilla de verificación para desactivar Control de interruptores . Eso tendrá que hacerlo mi cerrar manualmente Control de interruptores .
El ejemplo AppleScript código se puede modificar para desmarcar el casilla de verificación para desactivar Control de interruptores Sin embargo, para ello será necesario mostrar el UI de Preferencias del sistema . Si necesitas que haga ambas cosas y no te importa ver Preferencias del sistema parpadea en la pantalla durante uno o dos segundos, y luego utiliza el ejemplo AppleScript código muestran debajo de estas notas.
Dicho esto, a pesar de todo, se verá el Azulejos de muelle rebote una vez en el Muelle cuando el shell script se ejecuta y esto no se puede evitar.
Si bien esto puede lograr el objetivo de permitir Control de interruptores de la línea de comandos No obstante, Guiones de interfaz de usuario la escritura puede ser kludgy y propensos a fallar como el estructura jerárquica de los elementos de la interfaz de usuario cambios con las actualizaciones del OS o aplicaciones involucradas. En otras palabras, lo que funciona, por ejemplo, en MacOS Catalina puede necesitar ser ajustado para su uso en, por ejemplo, MacOS Big Sur .
Actualizar para cambiar el estado de la casilla Habilitar control de interruptores .
Ejemplo AppleScript código :
#!/usr/bin/osascript
-- # Check to see if System Preferences is
-- # running and if yes, then close it.
-- #
-- # This is done so the script will not fail
-- # if it is running and a modal sheet is
-- # showing, hence the use of 'killall'
-- # as 'quit' fails when done so, if it is.
-- #
-- # This is also done to allow default behaviors
-- # to be predictable from a clean occurrence.
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
-- # Make sure System Preferences is not running before
-- # opening it again. Otherwise there can be an issue
-- # when trying to reopen it while it's actually closing.
repeat while running of application "System Preferences" is true
delay 0.1
end repeat
-- # Open System Preferences to the Accessibility pane.
tell application "System Preferences" to ¬
reveal pane id "com.apple.preference.universalaccess"
tell application "Sysem Preferences" to activate
-- # Use System Events to achive the goal.
tell application "System Events"
tell window 1 of application process "System Preferences"
-- # Wait for target pane to be available.
-- # The target in this case has a checkbox.
my waitForUIelement(checkbox 1)
-- # Ascertain the target row to select.
set rowSwitchControl to the first row of ¬
table 1 of scroll area 1 whose value of ¬
static text 1 of UI element 1 is ¬
"Switch Control"
-- # Select the target row.
select rowSwitchControl
-- # Wait for target checkbox to be available.
my waitForUIelement(checkbox 1 of tab group 1 of group 1)
-- # Check to see if the Enable Switch Control
-- # checkbox is checked, and if it is, then
-- # uncheck it. Otherwise check it.
if the value of checkbox 1 of tab group 1 of group 1 is 1 then
-- # The Enable Switch Control checkbox is checked.
-- # Click the Enable Switch Control checkbox.
click checkbox 1 of tab group 1 of group 1
-- # Wait for OK button to be available.
my waitForUIelement(button 1 of sheet 1)
-- # Click the OK button..
click button "OK" of sheet 1
else
-- # The Enable Switch Control checkbox is not checked.
-- # Click the Enable Switch Control checkbox.
click checkbox 1 of tab group 1 of group 1
end if
end tell
end tell
delay 0.02
quit application "System Preferences"
-- ## Handler(s) ##
on waitForUIelement(uiElement)
tell application "System Events"
tell window 1 of application process ¬
"System Preferences"
set i to 0
repeat until exists uiElement
delay 0.1
set i to i + 1
if i 30 then return
end repeat
end tell
end tell
end waitForUIelement
Nota: El <em>ejemplo </em><strong>AppleScript </strong><em>código </em>es sólo eso y sin ningún tipo de inclusión <em>tratamiento de errores </em>no contiene ningún otro <em>tratamiento de errores </em>según corresponda. Corresponde al usuario añadir cualquier <em>tratamiento de errores </em>como sea apropiado, necesario o deseado. Eche un vistazo a la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129232" rel="nofollow noreferrer"><strong>intente </strong></a><em>declaración </em>y <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129657" rel="nofollow noreferrer"><strong>error </strong></a><em>declaración </em>en el <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guía del lenguaje AppleScript </strong></a>. Véase también, <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_error_xmpls.html#//apple_ref/doc/uid/TP40000983-CH221-SW1" rel="nofollow noreferrer"><strong>Trabajar con errores </strong></a>. Además, el uso del <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW10" rel="nofollow noreferrer"><strong>retraso </strong></a><em>comando </em>puede ser necesario entre eventos cuando sea apropiado, por ejemplo <code>delay 0.5</code> con el <em>valor </em>de la <em>retraso </em>ajustado apropiadamente.