Cambiar la dirección de desplazamiento del trackpad con AppleScript en Yosemite

Prefiero la dirección de desplazamiento "natural" cuando uso mi trackpad MBAir, pero "antinatural" cuando uso el mouse. Con frecuencia cambio de un lado a otro dependiendo de dónde estoy trabajando, así que he estado usando un poco de AppleScript para cambiar la configuración. Este script dejó de funcionar cuando actualicé a Mac OS Yosemite. Todavía abre el panel Scroll & Zoom de las preferencias del Trackpad, pero no hace clic en la casilla de verificación. He intentado algunas cosas pero no puedo hacer que funcione. No soy un desarrollador de Apple, por lo que no tengo ninguna herramienta de depuración. ¿Algun consejo?

try
    tell application "System Preferences"
        activate
        set current pane to pane "com.apple.preference.trackpad"
    end tell

    tell application "System Events"
        tell process "System Preferences"
            click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
            click checkbox 1 of tab group 1 of window "Trackpad"
        end tell
    end tell
end try

Respuestas (8)

Primero, asegúrese de que Applescripts tenga permiso para modificar aplicaciones. Esto se puede hacer abriendo System Preferences | Security & Privacy | Accessibilityy comprobando el Editor de secuencias de comandos . Este es un proceso único y no debería tener que verificarlo nuevamente.

Ejecuté este mismo fragmento que @Bowen proporcionó en su pregunta sobre Mojave y noté lo que describió. Lo arreglé agregando el retraso mencionado por @Bowen en su respuesta. La casilla se marcaría o desmarcaría ahora que hemos agregado un pequeño retraso.

Aquí está ese ejemplo que ejecuté directamente desde el Editor de secuencias de comandos:

try
tell application "System Preferences"
    activate
    set current pane to pane "com.apple.preference.trackpad"
end tell
delay 2
tell application "System Events"
    tell process "System Preferences"
        click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
        click checkbox 1 of tab group 1 of window "Trackpad"
        tell application "System Preferences" to quit
    end tell
end tell
end try

Además, en relación con este tema, construí algo usando ideas de este hilo, ya que la gente puede querer automatizarlo según su configuración. El siguiente script está "listo para Automator", o se puede exportar como una aplicación para que pueda ejecutarlo al inicio o como quiera ejecutarlo. También debe permitir el acceso a la aplicación exportada como se muestra en la imagen de arriba para "Dirección de desplazamiento Clicker". Esto es específico para un mouse Logitech que se encuentra, pero se puede modificar fácilmente a cualquier otro tipo de cadena/ratón. También se puede usar como una referencia decente para construir para la dirección de desplazamiento. Por mi parte, me cansé de cambiar la dirección de desplazamiento al pasar del mouse al trackpad, y así es como encontré este hilo.

Adaptado para ser exportado como una aplicación desde el Editor de scripts

try
    set logitech to "Logitech"
    try
        set scriptOutput to do shell script "system_profiler SPUSBDataType | grep -i logitech"
        if scriptOutput contains logitech then
            tell application "System Preferences"
                activate
                set current pane to pane "com.apple.preference.trackpad"
            end tell
            delay 2
            tell application "System Events"
                tell process "System Preferences"
                    set checkBoxOne to checkbox 1 of tab group 1 of window "Trackpad"
                    click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
                    tell checkBoxOne to if value is 1 then click
                    tell application "System Preferences" to quit
                end tell
            end tell
        end if
    on error errMsg
        log errMsg
        tell application "System Preferences"
            activate
            set current pane to pane "com.apple.preference.trackpad"
        end tell
        delay 2
        tell application "System Events"
            tell process "System Preferences"
                set checkBoxOne to checkbox 1 of tab group 1 of window "Trackpad"
                click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
                tell checkBoxOne to if value is 0 then click
                tell application "System Preferences" to quit
            end tell
        end tell
    end try
end try
Estoy usando su primer ejemplo en un servicio de Automator. Cuando lo activo desde otra aplicación (por ejemplo, Safari), el área de Seguridad y privacidad quiere que otorgue acceso a esa aplicación para controlar las Preferencias del sistema y los Eventos del sistema. No necesariamente quiero hacer eso, ni quiero tener que autorizar cada aplicación que pueda tener abierta. ¿Hay alguna forma de evitar esto? ¿Tengo algo mal configurado? ¿O es solo parte de los cambios de seguridad de Mojave?
Actualicé mi respuesta para mostrar que solo debe otorgar acceso una vez. Después de eso, no deberías tener que hacer eso continuamente. Además, que yo sepa, no puede ejecutar un script/Automator sin otorgarle acceso, ya que es un problema de seguridad y, al aprobarlo, acepta ese riesgo, incluso si no es un programa riesgoso.

Cambie "activar" a "ejecutar" para que el script se ejecute en segundo plano. también agregue "quit" al final de la secuencia de comandos con un retraso de 0,6 para salir de las preferencias del sistema después de ejecutar la secuencia de comandos.

try
tell application "System Preferences"
    (run)
    set current pane to pane "com.apple.preference.trackpad"
end tell
tell application "System Events"
    tell process "System Preferences"
        delay 0.6
        click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
        click checkbox 1 of tab group 1 of window "Trackpad"
    end tell

    tell application "System Preferences" to quit
end tell
end try
¡Gracias por esto! Estoy haciendo un pequeño programa de envoltorio para ejecutar esto. Lo agregaremos como colaborador en el repositorio de GitHub.
me alegro de haber ayudado

Puedes resolver esto sin ningún applescript: https://pilotmoon.com/scrollreverser/

Respondí mi propia pregunta: si este script no funciona, vaya a Preferencias del sistema | Seguridad y Privacidad | Accesibilidad y asegúrese de que el Editor de secuencias de comandos esté activado para permitir que Applescripts controle la GUI.

Esta es una versión ligeramente modificada de la respuesta proporcionada por @TODO y está inspirada en esta respuesta a una pregunta relacionada. Este AppleScript cambiará el desplazamiento directamente de forma silenciosa/invisible. Lo guardo como una aplicación y lo ejecuto a través de Spotlight cada vez que cambio entre el mouse y el trackpad.

try
    tell application "System Preferences"
        reveal pane "com.apple.preference.trackpad"
    end tell
    tell application "System Events"
        tell process "System Preferences"
            click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
            click checkbox 1 of tab group 1 of window "Trackpad"
        tell application "System Preferences" to quit
        end tell
    end tell
end try

Editado: olvidé mencionar que necesito otorgar el permiso de accesibilidad por una vez (cuando se me solicite). Después del aviso de una sola vez, funciona de maravilla.

Entonces, lo que estaba sucediendo era que el código pensaba que el código era demasiado rápido. Entonces, lo que hice fue poner retrasos entre donde no funcionaba y funciona perfectamente bien. Si lo desea, puede reducir el retraso a 0,5 o 0,2

decirle a la aplicación "Preferencias del sistema" activar establecer el panel actual en el panel "com.apple.preference.trackpad" finalizar decirle

decirle a la aplicación "Eventos del sistema" decirle al proceso "Preferencias del sistema" demora (1) hacer clic en el botón de opción "Desplazar y hacer zoom" del grupo de pestañas 1 de la ventana "Panel táctil" demora (1) hacer clic en la casilla de verificación 1 del grupo de pestañas 1 de la ventana "Panel táctil" demora (1) fin decir fin decir

Creé una pequeña aplicación MenuBar-App para Mac para automatizar este comportamiento ( Scrolly ). ¿Cuál es la diferencia, puede preguntar, para scrollreverser ? La aplicación scrollreverser es realmente agradable, pero la desventaja es que en realidad no cambia la configuración (lo que hace mi aplicación, gracias a ustedes y a los scripts de Apple que todos compartieron en este hilo).

Si quieres, puedes echar un vistazo aquí y probarlo. mín. Los requisitos son MacOS 11. Como quería probar SwiftUI 2, tuve que superar el min. versión.

Esto es lo que funcionó para mí:

tell application "System Preferences"
    reveal anchor "trackpadTab" of pane id "com.apple.preference.trackpad"
end tell

tell application "System Events" to tell process "System Preferences"
    click checkbox 1 of tab group 1 of window 0
end tell

quit application "System Preferences"

Tomé prestado el código de aquí .