¿Hay alguna manera de activar y desactivar la función de las teclas del mouse usando AppleScript o un comando de terminal?

Estoy ejecutando Mac OS X 10.7.2. ¿Hay alguna manera de ejecutar un AppleScript o un comando de terminal que active o desactive rápidamente la función de "teclas del mouse" en la pestaña Acceso universal? Idealmente, estoy buscando una solución que no involucre secuencias de comandos de GUI para la aplicación de Preferencias del sistema, aunque eso sería un poco mejor que nada.

He explorado defaults write com.apple.universalaccess useMouseKeysShortcutKeys 1y varias otras formas de esa declaración, pero fue en vano.

Respuestas (2)

Aquí está la solución de secuencias de comandos GUI:

tell application "System Preferences"
    reveal anchor "Mouse" of pane id "com.apple.preference.universalaccess"
    tell application "System Events"
        tell process "System Preferences"
            tell first window
                tell first tab group
                    tell radio group 1
                        if value of radio button 1 is 1 then
                            # enabled, so disable
                            click radio button 2
                        else
                            # disabled, so enable
                            click radio button 1
                        end if
                    end tell
                end tell
            end tell
        end tell
    end tell
    quit
end tell

Si es necesario, iniciará las Preferencias del sistema , pero no muestra la ventana y la cierra después, por lo que desde un punto de vista de la interfaz de usuario, al menos no muestra la ventana.


Puede cambiar la configuración persistente en la que se basa la configuración de Preferencias del Sistema utilizando los siguientes comandos:

defaults write ~/Library/Preferences/com.apple.universalaccess mouseDriver -bool YES
defaults write ~/Library/Preferences/com.apple.universalaccess mouseDriver -bool NO

Desafortunadamente, esto solo cambia el archivo de configuración y no aplica los cambios al sistema en ejecución.


Si bien puede presionar las teclas de opción mediante programación usando AppleScript, como lo siguiente:

tell application "System Events"
    key down option
    key up option
end tell

La opción de prensa cinco veces para alternar la configuración está en un nivel superior y no se activa por esto. Si bien todas Optionlas pulsaciones regulares de teclas se ignoran después de ejecutar solo key down option, aún puede alternar las teclas del mouse.


La depuración de las preferencias del sistema mientras se cambia la configuración muestra las llamadas hacia LaunchUAServerIfNeededy UAMouseKeysSetEnableden el UniversalAccessCoremarco privado. A menos que apliquemos ingeniería inversa a ese marco y escribamos nuestros propios binarios, no creo que obtengamos una forma programática adecuada de hacer esto.

Una respuesta fenomenal que solo mejoró con la edición. ¡Bien hecho!
¿Cómo averiguas cómo se llaman las anclas? Supuse 'Teclado' y 'Oído', pero parece que no puedo adivinar cuál debería ser el nombre ancla para la pestaña Ver. No es Ver, Vista, Visión... Lo que realmente me interesa es cómo encontrarlos, sin adivinar.

¿No puedes usar secuencias de comandos de pulsaciones de teclas en AppleScript para esto?

Algo del estilo de:

tell application "System Events"
    repeat 5 times
    //any of these should work
    key option
    key code 58
    key code option
    //I do not know if this works
    keystroke option
end tell
No, lamentablemente, por lo que puedo decir, la opción es un modificador, no una pulsación de tecla programable.
@Daniel Los comandos serían key down optiony key up option, pero no funcionan, incluso delay 0.1entre cada uno.
@Daniel ¿Lo intentaste?
Hice. No activó el interruptor cuando se ejecutó. Tenga cuidado de no hacer coincidir nunca un par de estos cuando lo intente. AFAIK es imposible soltar una tecla presionada de esta manera a menos que sea con el key up.
Sí lo intenté y no, no funciona. :-(