¿Es posible cambiar la configuración "Ignorar el panel táctil incorporado cuando el mouse está presente" con un atajo de teclado?

Me gusta usar mi MacBook con un mouse USB la mayor parte del tiempo, y mantengo marcada la opción "Ignorar el trackpad incorporado cuando el mouse o el trackpad inalámbrico están presentes" para evitar mover accidentalmente el cursor mientras escribo. Sin embargo, ocasionalmente es útil volver a activarlo para ciertas tareas, y me gustaría poder hacerlo con un atajo de teclado.

Intenté grabar el proceso de encenderlo/apagarlo con Automator, pero cuando copio el script resultante y lo ejecuto, llega hasta la configuración de Accesibilidad y luego me da un error de sintaxis que dice 'No se puede hacer clic en la casilla de verificación 3 de ventana "Accesibilidad" del proceso de aplicación "Preferencias del Sistema"'.

También intenté configurar "USBMouseStopsTrackpad" de forma predeterminada en 0 y 1 en la terminal, pero parece que no hace nada. Puedo ver que esto cambia a 0 o 1 cuando marco/desmarco la casilla, así que estoy bastante seguro de que tengo la opción correcta, pero no pasa nada cuando la cambio.

¡Disculpas si esto es realmente obvio y simplemente no lo estoy viendo! Todavía no estoy muy familiarizado con esta máquina. Soy consciente de esta pregunta:

¿Es posible apagar el trackpad en OS X con un atajo de teclado?

pero no creo que sea un duplicado ya que estoy tratando de hacer algo ligeramente diferente.

Respuestas (3)

Esto se puede hacer de forma nativa sin necesidad de nada de terceros, simple y fácilmente usando AppleScript y UI Scripting .

El código AppleScript de ejemplo se puede implementar de varias maneras diferentes, como un script , una aplicación AppleScript o como un servicio de Automator , el último de los cuales puede tener asignado un método abreviado de teclado .

Específicamente, cómo implementar como un servicio de Automator se ha cubierto más de suficientes veces que una búsqueda en Google debería proporcionar una respuesta sobre cómo hacerlo. Sé que escribí instrucciones para ello más veces de las que puedo recordar.

El siguiente código AppleScript de ejemplo funciona para mí y alterna la casilla de verificación " Ignorar el panel táctil incorporado cuando el mouse o el panel táctil inalámbrico están presentes: " :

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.1
end repeat
tell application "System Preferences"
    reveal anchor "Mouse" of pane id "com.apple.preference.universalaccess"
    delay 1
    tell application "System Events"
        click checkbox 1 of group 1 of window 1 of application process "System Preferences"
    end tell
    quit
end tell
  • Tenga en cuenta que es posible que sea necesario ajustar el valor de los delay comandos para su sistema y que se necesiten o no delay comandos adicionales. Ajuste los valores de y o agregue/elimine los delay comandos según corresponda.

  • Esto fue probado y funciona bajo macOS High Sierra ; sin embargo, tenga en cuenta que, dependiendo de la versión de OS X/macOS que esté ejecutando, es posible que deba ajustar la click checkbox ...línea de código según la versión del sistema operativo .

Por ejemplo, con macOS Catalina necesitarías usar:

click checkbox 2 of tab group 1 of group 1 of window 1 of application process "System Preferences"


Nota: El código AppleScript de ejemplo es solo eso y no contiene ningún manejo de errores que pueda ser apropiado. El usuario tiene la responsabilidad de agregar cualquier manejo de errores que sea apropiado, necesario o deseado. Eche un vistazo a la declaración de prueba y la declaración de error en la Guía del lenguaje AppleScript . Consulte también Trabajar con errores . Además, el uso del comando de retardo puede ser necesario entre eventos cuando sea apropiado, por ejemplo , con el valor del retardo establecido apropiadamente. delay 0.5

¿Por qué su secuencia de comandos sale primero de las Preferencias del Sistema?
@JakeRobb, primero sale de las Preferencias del sistema porque está usando UI Scripting y si las Preferencias del sistema ya están abiertas y en una hoja modal , que hay algunas, entonces, sin ellas, la secuencia de comandos fallaría. Dicho esto, dado que las posibilidades de que eso suceda son escasas, sin embargo, siempre es mejor escribir código que pueda manejar las posibilidades.

Macroing esto es un poco tonto, pero es totalmente factible.

Recomiendo usar Keyboard Maestro para esto. Es algo así como Automator... No es gratis, pero tiene una versión de prueba y definitivamente vale la pena. También podría hacer lo mismo en Automator o Applescript, pero es mucho más simple en KBM.

KBM tiene algunas acciones geniales cuando se trata de navegar por la interfaz gráfica de usuario:

  • Pausa hasta
    • La acción Pausar hasta que se detenga hasta que se cumplan los criterios para las condiciones.
  • Presiona un botón
    • La acción Presionar un botón presiona un botón con nombre en la ventana frontal.
  • Seleccionar o mostrar un elemento del menú
    • La acción Seleccionar o mostrar un elemento de menú selecciona un elemento de menú O muestra (abre) un menú en la barra de menú principal.
  • Insertar texto escribiendo
    • La acción Insertar texto escribiendo convierte texto sin formato (simple) en pulsaciones de teclas y luego escribe cada uno de ellos individualmente. Solo funciona con caracteres que se pueden escribir en el teclado con una o dos pulsaciones de teclas (por ejemplo, Opción-e e generalmente escribe é, y Keyboard Maestro puede duplicar esa escritura).
  • Escriba una pulsación de tecla
    • La acción Escribir pulsación de tecla le permite escribir una sola pulsación de tecla, prácticamente cualquier tipo de pulsación de tecla que pueda escribir en el teclado.
  • Mover o hacer clic con el mouse
    • La acción Mover o hacer clic con el mouse le permite mover, hacer clic o mover y hacer clic con el mouse usando cualquier botón del mouse y, opcionalmente, arrastrando.
    • Esto es algo relativamente pequeño, pero creo que es genial que pueda restaurar la ubicación del mouse después de que se complete la acción. Sin embargo, esa opción está un poco escondida.

Los pasos para producir la acción junto con explicaciones ligeras:

Imagen de los pasos de la macro (Enlace)

No es la macro más rápida de la historia (~3 segundos), pero es mejor que sumergirse en los menús manualmente.

Mientras crea esta macro, asegúrese de ejecutar la macro sin terminar después de cada paso para asegurarse de que todo esté exactamente como debe ser.

  1. Nombre de la acción:Activate a Specific Application
    • Activar:System Preferences
    • Abre Preferencias del Sistema

  2. Nombre de la acción:Pause Until
    • Nueva condición:Menu Condition
    • Un elemento de menú: con este nombre Accessibilityestá habilitado
    • Esto más o menos asegura que la ventana esté activa y que la Accesibilidad sea un elemento de menú al que puede navegar.

  3. Nombre de la acción:Move a Window
    • Mover a: → 00
    • Esto asegura que la ventana de preferencias esté en su pantalla principal. Solo es importante porque si en algún momento arrastra manualmente la ventana a su pantalla secundaria, todas las acciones que dependen de las coordenadas fallarían sin esto y la siguiente acción 'Mover una ventana'.

  4. Nombre de la acción:Select or Show a Menu Item
    • Seleccionar menú en:System Preferences
    • Título del menú:View
    • Opción del menúAccessibility
    • También puede simplemente hacer clic Menu ▾en la parte superior izquierda de esta acción para elegir el elemento del menú desde allí, siempre que las Preferencias del sistema estén abiertas. Eso hace que sea muy fácil simular hacer clic en cualquier elemento del menú.

  5. Nombre de la acción:Pause
    • Pausa por : 1segundos.
    • Esto es un poco misterioso. Quería usar la pausa hasta que el título de la ventana sea 'Accesibilidad', lo que funciona si vas a la página de Accesibilidad en Preferencias del sistema y verificas la acción. KBM dice que el valor es verdadero cuando estás allí. Sin embargo, siguió fallando cuando ejecuté la macro. También probé la 'Pausar hasta la condición de píxel' y también falló. Supongo que la condición se hizo realidad antes de que fuera posible cualquier interacción... El objetivo de usar la acción 'Pausar hasta' es asegurarnos de que cualquier cosa que queramos hacer a continuación realmente se active. en el momento adecuado. Cuando usa una pausa estática o no hace ninguna pausa, existe la posibilidad de que ocasionalmente tome más tiempo de lo normal y la pulsación de tecla simulada simplemente entre en el éter y la macro se atasque o en el peor de los casos: en realidad hace algo totalmente diferente, envía una alerta de advertencia de misiles a todos los hawaianos o algo así. Los pocos lugares donde usé una pausa estática deberían estar bien, ya que todos están en la misma página de la misma ventana, por lo que hayNo debería haber ningún problema extraño provocado por eso, pero si no hace lo que se supone que debe hacer: aumente el retraso estático. También puede agregar 'Pausa' entre algunas de las otras acciones que no están separadas por un retraso, si no parece funcionar. Las máquinas más lentas suelen requerir un mayor retraso.

  6. Nombre de la acción:Type a Keystroke
    • Simular pulsación de tecla:Cmd+F
    • Haga clic en la entrada Simular pulsación de tecla y presione las teclas de método abreviado.
    • Si esta ventana ya está activa, esto predetermina la posición para la búsqueda, por lo que la siguiente pulsación de tecla va al lugar correcto

  7. Nombre de la acción:Move a Window
    • cambiar Move toaCenter
    • Esto asegura que todas las acciones que usan coordenadas lleguen a los lugares correctos.

  8. Nombre de la acción:Type a Keystroke

    • Simular pulsación de tecla:Tab
    • Puede seleccionarlo de la lista desplegable o escribirlo.
    • Activa la lista en el lado izquierdo de System Preferences > Accessibilityla ventana.

  9. Nombre de la acción:Pause Until

    • Nueva condición:Pixel Condition
    • Haga clic en elGet
      • Le dará 5 segundos para colocar el mouse sobre el color.
      • Active la ventana y desplace el mouse en cualquier lugar sobre el borde azul para obtener ese color
      • ingrese la descripción de la imagen aquí
    • Esto solo asegura que la siguiente acción se active en el momento adecuado.

  10. Nombre de la acción:Type a Keystroke

    • Simular pulsación de tecla:End
    • Puede seleccionarlo de la lista desplegable o escribirlo.
    • Activa la lista en el lado izquierdo de System Preferences > Accessibilityla ventana.

  11. Nombre de la acción:Type a Keystroke

    • Simular pulsación de tecla:Alt+Down Arrow
    • Haga clic en la entrada Simular pulsación de tecla y presione las teclas de método abreviado.
    • Este menú de la izquierda puede retener el último elemento visitado la próxima vez que lo abra, por lo que hacemos esto solo para asegurarnos de que el primer elemento esté seleccionado o, de lo contrario, la próxima pausa hasta que pueda fallar ocasionalmente.
  12. Nombre de la acción:Pause Until

    • Nueva condición:Pixel Condition
    • Nuevamente lo mismo que con la última Pausa hasta → Condición de píxel. Presione el Getbotón, active la ventana de Accesibilidad y elija un color del fondo del elemento activo.
    • ingrese la descripción de la imagen aquí
    • Esto solo asegura que la siguiente acción se active en el momento adecuado.

  13. Acción:Move or Click Mouse

    • Relativo a laAbsolute position
    • Haga clic en el menú de engranajes en la esquina superior derecha de la acción y seleccione Restore Mouse Location.
    • Presione el Getbotón y desplace el mouse sobre "Mouse & Trackpad"
    • Elegí usar relativo a la posición absoluta ya que las Condiciones de píxeles no pueden ser relativas a la ventana actual... Realmente no importa mucho.

    • ingrese la descripción de la imagen aquí
  14. Nombre de la acción:Pause Until

    • Nueva condición:Pixel Condition
    • Nuevamente lo mismo que con la última Pausa hasta → Condición de píxel. Presione el Getbotón, active la ventana de Accesibilidad y elija un color del fondo del elemento activo.
    • ingrese la descripción de la imagen aquí
    • Esto solo asegura que la siguiente acción se active en el momento adecuado.

  15. Acción:Move or Click Mouse

    • Relativo a laAbsolute position
    • Haga clic en el menú de engranajes en la esquina superior derecha de la acción y seleccione Restore Mouse Location.
    • Presione el Getbotón y coloque el cursor sobre elIgnore built-in tackpad when mouse or wireless trackpad is present
    • Elegí usar relativo a la posición absoluta ya que las Condiciones de píxeles no pueden ser relativas a la ventana actual... Realmente no importa mucho.

    • ingrese la descripción de la imagen aquí
  16. Nombre de la acción:Pause

    • Pausa por .6segundos
    • Es posible que desee alargar esto si siente que no puede ver el cambio de valor y le gustaría... Este retraso se agregó por ese motivo, pero pasa bastante rápido. Prueba algo así como 1 segundo...

  17. Nombre de la acción:Quit a Specific Application
    • Salir: System Preferences.
    • Es posible que desee deshabilitar esta acción con fines de prueba.
Usted dijo: "Estoy bastante seguro de que las soluciones de la línea de comandos están bloqueadas por SIP", bueno, SIP no tiene absolutamente nada que ver con el motivo por el cual el uso defaultspara modificar el valor de una clave en un .plistarchivo no logra el objetivo. El defaults comando se volvió casi inútil a partir de OS X 10.8 y posteriores, donde se realizaron cambios importantes que rompieron el uso efectivo del mismo en comparación con versiones anteriores de OS X. Todavía se puede usar en algunos casos, pero no tantos como antes. estar donde una vez solía tener un efecto inmediato sin necesariamente tener que matar un proceso para que el cambio se lleve a cabo.
@ user3439894, supongo que no funciona en esta situación ya que no publicaste eso como respuesta.
Ni siquiera intenté usar defaultsen este caso de uso. ¡El punto que estaba tratando de hacer es que su declaración que cité en mi comentario anterior es errónea! SIP no impide que el defaults comando realice acciones en .plistlos archivos en formato ~/Library/Preferences. Deberías leer: Acerca de la Protección de integridad del sistema en tu Mac
@ user3439894, no es que no haya entendido lo que dijiste. Usted insinuó que la opción de la línea de comando aún podría estar sobre la mesa, pero no confirmó si realmente lo estaba... Me estaba enfocando en encontrar una buena respuesta a la pregunta y usted se estaba enfocando en decirme que estaba equivocado en una de mis declaraciones. .
Usted dijo: "Usted insinuó que la opción de la línea de comando aún podría estar sobre la mesa, pero no confirmó si realmente lo estaba...", nunca insinué nada, solo hice declaraciones de hecho. ¡No había nada que confirmar ya que su uso específico no era explícitamente relevante para el comentario que hice! Sin intención de faltar el respeto, parece que su suposición de que SIP está en juego aquí muestra que no tiene un buen manejo de SIP o defaults. Yo también me concentré en proporcionar una buena respuesta, lo que creo que hice al demostrar que se puede hacer de forma nativa sin necesidad de nada de terceros, simple y fácilmente usando AS y UI Scripting.
@ user3439894, lo entiendo. Tienes razón y yo estoy equivocado. No hay necesidad de más comentarios, amigo...
@Joonas Incluso si se equivocó sobre el SIP, esta sigue siendo una buena respuesta y agradezco el esfuerzo, ¡gracias!
@DrRelling, bueno, solo estaba suponiendo que SIP era la razón por la que las soluciones de la terminal no funcionaban y, aparte de que yo mencioné esta posibilidad, no tenía nada que ver con el meollo de mi respuesta, que es olvidarse de ingresar cosas en la Terminal o usar Applescript porque KBM lo hace mucho más fácil. Dije "Estoy bastante seguro", pero dada la respuesta de "user3439894", probablemente debería haberlo redactado de otra manera, como: "SIP podría ser el motivo..." o no mencionarlo en absoluto, pero No pensé que fuera gran cosa, porque definitivamente no era el punto principal de mi respuesta, solo un pensamiento pasajero.

No puedo comentar sobre la respuesta de @ user3439894 debido a una reputación insuficiente, pero la línea correcta para OS X Catalina es:

click checkbox 2 of tab group 1 of group 1 of window 1 of application process "System Preferences"

Tenga en cuenta el bit "... del grupo de pestañas 1 ...", que ahora es necesario.

¿Por qué no editar la publicación en cuestión? Los comentarios son para cosas que no tiene claras, parece que puede hacer esa edición / adición usando el comando de edición.