2 votos

un único atajo de teclado que alterna entre 2 resoluciones en MacOS 12.6

Mi propia respuesta en https://apple.stackexchange.com/a/436069/53510 no me funciona ahora que mi MacBook Pro tiene 12.6, y esta respuesta tampoco: https://apple.stackexchange.com/a/448556/53510

¿Qué tengo que actualizar para que vuelva a funcionar?

Quiero alternar fácilmente entre "Por defecto" y "Más espacio" que se muestra aquí:

screenshot

Disponer de un único atajo de teclado que conmute entre 2 resoluciones:

  1. Automatizador > Archivo > Nuevo > Acción rápida > Elige
  2. Busca "Ejecutar AppleScript" y haz doble clic en el resultado.
  3. Sustituye el código script por defecto por el que te proporciono a continuación.
  4. Prueba a pulsar el botón Ejecutar un par de veces para ver si funciona la alternancia.
  5. Guardar como "toggle_display_resolution". (Más tarde, si alguna vez quieres editarlo, abrirás /Users/your_username/Library/Services/toggle_display_resolution.workflow en Automator).
  6. Cerrar Automator.
  7. Preferencias del Sistema > Teclado > Atajos > Servicios
  8. Asigna un atajo de teclado al nuevo servicio que has creado (que probablemente estará al final de la lista).

Por cierto, puede que necesites editar tu "Seguridad y Privacidad" > Accesibilidad. Consulte responder .

# https://apple.stackexchange.com/q/449891/53510
set monitor to 2
tell application "System Preferences"
    activate
    set the current pane to pane id "com.apple.preference.displays"
    delay 2
    tell application "System Events"
        tell window "Displays" of application process "System Preferences"
            click button "Display Settings…"
            delay 2
            click row monitor of outline 1 of scroll area 1 of sheet 1
            click radio button "Scaled" of radio group 1 of sheet 1
            tell sheet 1
                # ----------------------------------
                # from "try" to "end try" is the problem:
                try
                    set selected_button to button "Resolution4, Selected"
                    click button "Resolution1"
                on error
                    click button "Resolution4"
                end try
                # ----------------------------------
            end tell
            delay 0.5
            click button "Done" of sheet 1
        end tell
    end tell
end tell
# The next line is optional and could be commented out by prepending with a hash (#).
delay 2
quit application "System Preferences"

No sé cómo especificar el Especificador de objetos para los botones Resolución1 y Resolución4.

He intentado añadir "en la colección 1" porque el Inspector de accesibilidad dice que el tipo de contenedor es "colección" (véase la captura de pantalla siguiente), pero no ha funcionado.

Accessibility Inspector screenshot

error screenshot

1voto

wch1zpink Puntos 11

La utilidad de línea de comandos screenresolution te permite cambiar muy fácilmente las resoluciones de pantalla.

En Terminal.app instalé resolución de pantalla utilizando Elaboración casera con el comando...

brew install screenresolution

Una vez instalado correctamente el screenresolution utilidad de línea de comandos en Terminal, los comandos...

screenresolution list enumera todas las posibles resoluciones de pantalla que puedo utilizar.

screenresolution get me muestra la resolución actual de mi pantalla.

Así que ahora si quiero cambiar la resolución de mi pantalla a 1440x900, es tan fácil como usar esta línea de código...

screenresolution set 1440x900x32@0

Así que ahora, en lugar de añadir un comando Ejecutar AppleScript a su flujo de trabajo, añada un comando Ejecutar Shell script en su lugar. Puede que tenga que añadir la ruta completa como...

/usr/local/bin/screenresolution set 1440x900x32@0


NOTA: Lo siguiente es lo que utilicé para probar y solucionar problemas.


screenresolution list me dio los siguientes resultados.

https://i.imgur.com/lay4HVe.png

A partir de ahí quise crear una lista ordenada con sólo 1 resolución disponible por línea y la escribí en un archivo llamado tmp.txt en mi Escritorio. Utilicé ese archivo para hacer un bucle a través de cada elemento en ese archivo para probar el cambio de mi resolución de pantalla a ese elemento.

Este siguiente comando es lo que he utilizado para crear el tmp.txt en mi Escritorio...

screenresolution list > ~/Desktop/tmp.txt ;grep -E '^ ' < ~/Desktop/tmp.txt |tr -cd "[:print:]" |tr ' ' '\n' |sort -n |uniq |sed '/^$/d' |pbcopy ;pbpaste > ~/Desktop/tmp.txt

Ahora el contenido de mi tmp.txt tiene este aspecto...

enter image description here

El siguiente comando es el que utilicé para recorrer cada línea del archivo ~/Desktop/tmp.txt e intentar cambiar la resolución de mi pantalla a ese elemento con un retardo de 3 segundos entre cada uno.

while read line ;do screenresolution set "$line" ;sleep 3 ;done < ~/Desktop/tmp.txt

Estos son los resultados. Ahora veo cuáles puedo utilizar y cuáles no.

enter image description here

He editado a propósito algunas líneas del archivo tmp.txt para poder generar algunos errores.

0 votos

Sí, eso es lo que había intentado.

0voto

Ryan Puntos 148

Por fin lo he descubierto:

Disponer de un único atajo de teclado que conmute entre 2 resoluciones:

  1. Automatizador > Archivo > Nuevo > Acción rápida > Elige
  2. Busca "Ejecutar AppleScript" y haz doble clic en el resultado.
  3. Sustituye el código script por defecto por el que te proporciono a continuación.
  4. Prueba a pulsar el botón Ejecutar un par de veces para ver si funciona la alternancia.
  5. Guardar como "toggle_display_resolution". (Más tarde, si alguna vez quieres editarlo, abrirás /Users/your_username/Library/Services/toggle_display_resolution.workflow en Automator).
  6. Cerrar Automator.
  7. Preferencias del Sistema > Teclado > Atajos > Servicios
  8. Asigna un atajo de teclado al nuevo servicio que has creado (que probablemente estará al final de la lista).

Por cierto, puede que necesites editar tu "Seguridad y Privacidad" > Accesibilidad. Consulte responder .

# https://apple.stackexchange.com/q/449891/53510
set monitor to 2
tell application "System Preferences"
    activate
    set the current pane to pane id "com.apple.preference.displays"
    delay 2
    tell application "System Events"
        tell window "Displays" of application process "System Preferences"
            click button "Display Settings…"
            delay 2
            click row monitor of outline 1 of scroll area 1 of sheet 1
            click radio button "Scaled" of radio group 1 of sheet 1
            tell sheet 1
                # ----------------------------------
                # from "try" to "end try" is the problem:
                try
                    set selected_button to button "Resolution4, Selected" of UI element 8
                    click button "Resolution1" of UI element 8
                on error
                    click button "Resolution4" of UI element 8
                end try
                # ----------------------------------
            end tell
            delay 0.5
            click button "Done" of sheet 1
        end tell
    end tell
end tell
# The next line is optional and could be commented out by prepending with a hash (#).
delay 2
quit application "System Preferences"

¿Cómo descubrí la parte "del elemento 8 de la interfaz de usuario"?

En Automator, pulsé el botón Grabar, que grabó un Watch Me Do script de mí editando manualmente la configuración de Displays.

Luego arrastré los pasos de Watch Me Do a AppleScript y obtuve la pista.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X