4 votos

¿Disminuir el brillo de la pantalla del MBP, utilizando AppleScript (y mientras se utiliza un monitor secundario)?

Acabo de adquirir un monitor secundario para usarlo con mi MacBook Pro (13" Retina Early-2015). Anteriormente tenía AppleScripts para atenuar y para aumentar el brillo de la pantalla MBP-ya sea a ninguna barra o hasta aproximadamente 75%-pero ahora no están trabajando por alguna razón (w / o w / o el monitor externo conectado). También intenté usar Shades pero ambas pantallas siguen parpadeando cada 2-3 segundos (preferiría usar un AppleScript también).

Básicamente, mi monitor externo es mi pantalla principal y quiero ser capaz de atenuar la pantalla de mi MBP usando un AppleScript ya sea a ninguna barra o alrededor del 75% (de los cuales los scripts luego serán redirigidos a atajos de teclado con una aplicación).

¿Qué código AppleScript se necesitaría para hacer esto?

EDITAR: Aquí está el viejo que funcionaba muy bien antes, pero por alguna razón se detuvo (con fuera sin un monitor externo conectado).

tell application "System Events"
    repeat 16 times
        key code 107
    end repeat
end tell

y

tell application "System Events"
    repeat 11 times
        key code 113
    end repeat
end tell

0 votos

Puesto que ya tienes un código AppleScript que en su día hizo lo que querías, ¿por qué no depurar el código para que vuelva a funcionar? Dicho esto, ya que tienes código

0 votos

A

6voto

Raggie Jessy Puntos 9

Tener un monitor secundario no era el problema, sino que también necesitaba un teclado externo.

Cuando se utiliza un teclado externo, los códigos de las teclas de brillo cambian de 107 y 113 a 145 y 144 respectivamente, para bajar/subir el nivel de brillo.

Para cualquier persona interesada, el key code eventos que funciona con un teclado externo (probado / funciona con un teclado externo de Apple) son:

Para bajar el brillo del todo utiliza:

tell application "System Events"
    repeat 16 times
        key code 145
    end repeat
end tell

El código anterior bajará el brillo al máximo, independientemente de donde esté fijado actualmente. Si ya está establecido en cualquier cosa por debajo de 100%, cualquier extra inferior key code aunque se siguen ejecutando, lo hacen de forma inofensiva y se ignoran cuando se ejecuta el código anterior.

Para aumentar el brillo hasta, por ejemplo, el 75%, utiliza:

tell application "System Events"
    repeat 12 times
        key code 144
    end repeat
end tell

Tenga en cuenta que si desea una transición más suave, añada un botón delay 0.02 comando a cada repeat bucle De lo contrario, la transición puede parecer bastante brusca.

5voto

wch1zpink Puntos 11

Este script fijará el valor del brillo de mi pantalla al 75% en mi MacBook Pro con OS Sierra si solo tengo disponible la pantalla retina en mis preferencias de pantalla

enter image description here


tell application "System Preferences"
    if it is running then
        quit
    end if
end tell
delay 0.2
activate application "System Preferences"
tell application "System Events"
    tell process "System Preferences"
        click button "Displays" of scroll area 1 of window "System Preferences"
        delay 1
        set value of value indicator 1 of slider 1 of group 2 of tab group 1 of window "Built-in Retina Display" to 0.75
    end tell
    delay 1
    quit application "System Preferences"
end tell

Este script establecerá el valor del brillo de mi pantalla al 75% en mi MacBook Pro ejecutando OS Sierra si tengo retina display disponible y tengo airplay activado y usando mi dispositivo airplay como segundo monitor en preferencias de pantalla.

enter image description here

tell application "System Preferences"
    if it is running then
        quit
    end if
end tell
delay 0.2
activate application "System Preferences"
tell application "System Events"
    tell process "System Preferences"
        click button "Displays" of scroll area 1 of window "System Preferences"
        delay 1
        click radio button "Display" of tab group 1 of window "Built-in Retina Display"
        set value of value indicator 1 of slider 1 of group 1 of tab group 1 of window "Built-in Retina Display" to 0.75
    end tell
    delay 1
    quit application "System Preferences"
end tell

Sin embargo, para estos dos scripts, mi pantalla retina integrada es mi monitor principal.

He aquí una versión revisada del script que fijará el brillo al 75% sin traer la aplicación de preferencias del sistema al frente. Creo que usted encontrará que esto es más eficiente.

tell application "System Preferences"
    reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
end tell
tell application "System Events" to tell process "System Preferences" to tell window "Built-in Retina Display"
    set value of value indicator 1 of slider 1 of group 2 of tab group 1 to 0.75
end tell
quit application "System Preferences"

0 votos

De hecho acabo de probar el segundo script con mi pantalla retina incorporada dispuesta como monitor principal y de nuevo con mi pantalla airplay dispuesta como monitor principal y el script funcionó las dos veces.

0 votos

El 1er código no funciona y me da error. El 2º código funciona, pero tiene que lanzar Preferencias del Sistema cada vez.

1 votos

@samseva He añadido una versión del script que no traerá las preferencias del sistema al frente

3voto

Xan Puntos 155

La respuesta anterior de wch1zpink para Sierra no funciona con versiones posteriores de MacOS. En MacOS 10.15.5 veo 2 jerarquías de elementos diferentes aparecen en diferentes momentos, por lo que el manejo de ambos:

set brightness to 0.75
tell application "System Preferences"
    reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
end tell
tell application "System Events" to tell process "System Preferences" to tell window 1
    set tryUntil to (current date) + 2 -- 2 seconds
    repeat
        try
            tell group 1 to tell tab group 1
                set value of value indicator 1 of slider 1 to brightness
            end tell
            exit repeat
        on error errorMessage
            try
                tell tab group 1
                    set value of value indicator 1 of slider 1 to brightness
                end tell
                exit repeat
            end try
            if ((current date) > tryUntil) then
                error errorMessage
            end if
        end try 
    end repeat
end tell

En mis pruebas, esto se completa en entre 0,02 segundos y 0,7 segundos, dependiendo de si Preferencias del Sistema ya está abierto. El código de repetición provoca reintentos si la jerarquía de elementos aún no está lista.

2voto

Margarita Puntos 16

Este AppleScript pondrá instantáneamente todas las pantallas en reposo.

do shell script "pmset displaysleepnow"
  1. las pantallas se volverán a encender cuando muevas el ratón/toques el teclado
  2. funciona tanto con pantallas internas como externas
  3. no hay retraso en el oscurecimiento de la pantalla

0voto

Ese es el código que estoy usando en mi configuración multipantalla. Es una versión ligeramente modificada del código de Andrew D. Bond publicado anteriormente.

set brightness to 0.75
tell application "System Preferences"
    reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
end tell
tell application "System Events" to tell process "System Preferences" to tell window "Built-in Retina Display"
    set tryUntil to (current date) + 2 -- 2 seconds
    repeat
        try
            tell group 1 to tell tab group 1
                set value of value indicator 1 of slider 1 to brightness
            end tell
            exit repeat
        on error errorMessage
            try
                tell tab group 1
                    set value of value indicator 1 of slider 1 to brightness
                end tell
                exit repeat
            end try
            if ((current date) > tryUntil) then
                error errorMessage
            end if
        end try
    end repeat
end tell

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