¿Cómo alternar con escala de grises en Yosemite?

Prefiero la escala de grises a la inversión de color cuando trabajo con poca luz y, en general, porque es menos cansada para los ojos. Pero son demasiados clics para alternar la configuración. Soy consciente de que para invertir el color de la pantalla, el acceso directo es Cmd+++ Alt. Y abra las opciones de Accesibilidad con ++ , pero no hay escala de grises en las opciones . En este momento, abro Accesibilidad a través de Spotlight, luego elijo mostrar y cambio la casilla de verificación. Me pregunto si hay alguna tecla de acceso directo para eso. Si no, ¿es posible hacer un atajo de teclado?Ctrl8CmdAltF5

No parece que puedas. Eché un vistazo al área de atajos de teclado (bajo Teclado en Preferencias del sistema) y no parece haber una forma de hacer que la pantalla sea en escala de grises a través de la combinación de teclas. :(

Respuestas (6)

El siguiente código AppleScript de ejemplo cambiará el estado de la casilla de verificación "Usar escala de grises" en Accesibilidad en Preferencias del sistema en OS X Yosemite (probado en 10.10.4) independientemente de lo que se seleccionó por última vez en Accesibilidad, ya que le dice a Preferencias del sistema que se abra directamente al ubicación de la casilla de verificación "Usar escala de grises" y cambie su estado.

tell application "System Preferences"
    reveal anchor "Seeing_Display" of pane id "com.apple.preference.universalaccess"
    tell application "System Events" to tell front window of application process "System Preferences"
        with timeout of 5 seconds
            repeat until (exists checkbox "Use grayscale")
                delay 0.1
            end repeat
            click checkbox "Use grayscale"
        end timeout
    end tell
    quit
end tell

El siguiente problema es cómo desea ejecutarlo. El problema que rodea configurarlo como un servicio a través de Automator para usar un atajo de teclado sin el uso de una utilidad de terceros es que cada aplicación que recibe la combinación de teclas de atajo necesitará tener permiso para hacerlo y eso se convierte en un problema a menos que solo elija, por ejemplo. Finder en lugar de todas las aplicaciones. Entonces, sin una utilidad de terceros, lo guardaría como un script en la carpeta Users Script y luego accedería desde el menú Script en la barra de menú de Apple o como una aplicación.

La configuración del menú Script en la barra de menús de Apple se encuentra en las Preferencias de los Editores de Script. Entonces son solo dos clics del mouse en cualquier momento que desee alternar el estado de la casilla de verificación "Usar escala de grises". Uno para hacer clic en el menú Scripts y otro para hacer clic en el nombre del script.

Como aplicación, se puede colocar en el Dock y luego con un solo clic del mouse en cualquier momento que desee alternar el estado de la casilla de verificación "Usar escala de grises".

En cualquiera de estos dos casos, deberá otorgar permiso en Accesibilidad en la pestaña Privacidad de Seguridad y privacidad en Preferencias del sistema para ejecutarlo correctamente.


Como nota al margen, si usa un programa como FastScripts , solo necesita usar el código AppleScript de ejemplo como un .scpt guardado en Script Editor , no crear un servicio de Automator usando la solución mencionada en el comentario y puede asignar el atajo de teclado en las Preferencias para FastScripts .

Tenga en cuenta que no estoy afiliado con el desarrollador de FastScripts, solo soy un usuario satisfecho.

Muchas gracias por la solución. Lo guardo como una aplicación en el muelle. Supongo que es más seguro dar control a esa aplicación en lugar de todo el editor de scripts. Muchas gracias por la respuesta.
@qbektrix, Sí, desde una perspectiva de seguridad, esa es una forma más segura de hacerlo. Por cierto, si no le gusta el ícono, puede cambiar el ícono reemplazando el archivo "applet.icns" dentro del paquete de aplicaciones o usar una utilidad de terceros para asignarle un ícono diferente. Si lo hace manualmente, el archivo .icns debe tener el mismo nombre, incluso si se cambia el nombre de un archivo "nombre_diferente.icns". Haga clic con el botón derecho en el paquete de la aplicación y seleccione Mostrar contenido del paquete, luego vaya a Contenido/Recursos/. Probablemente prefiera ejecutar killall Findery killall Dockobtener el nuevo archivo .icns para mostrar o un ciclo de cierre de sesión/inicio de sesión debería ser suficiente.
Logré solucionar el problema de "todas las aplicaciones necesitarán permiso" guardando el script en escala de grises como una aplicación de Automator y luego creando un servicio de Automator que simplemente inicia esa aplicación. Le doy al servicio el atajo de teclado y la aplicación obtiene permiso para controlar mi computadora. Editar: ¡Acabo de notar que hay un enlace en la segunda respuesta que recomienda hacer lo mismo! Así que felicitaciones a ellos. También tienen un retraso de 0,5 segundos en su guión; descubrí que también lo necesitaba.

Encontré una antigua discusión de Apple sobre esto y el usuario que respondió la pregunta publicó un archivo AppleScript que activará y desactivará la escala de grises. He modificado el código original para que funcione con OS X Yosemite.

Abra el "Editor de secuencias de comandos" y, en un documento nuevo, pegue lo siguiente:

tell application "System Preferences" to activate
delay 1

tell application "System Events"
tell process "System Preferences"
click the menu item "Accessibility" of the menu "View" of menu bar 1
delay 0.5
click the checkbox "Use grayscale" of window "Accessibility"
end tell
end tell
tell application "System Preferences" to quit

Haga clic en el martillo para compilarlo y luego guárdelo, pero donde dice "Formato de archivo" en el cuadro de diálogo Guardar, elija "Aplicación"

Antes de ejecutar este código, asegúrese de que se haya seleccionado "Mostrar" en Accesibilidad como se muestra en la imagen a continuación. Una vez hecho esto, puede salir de las Preferencias del sistema.

Asegúrese de que antes de ejecutar esto, "Pantalla" esté resaltado en Accesibilidad

En la primera ejecución de la aplicación, se bloqueará y OS X le preguntará si desea permitir que la aplicación controle la computadora usando funciones de accesibilidad. Permita el acceso, salga de la aplicación y reiníciela.

A veces esto no funcionará y se bloqueará con un mensaje de error. Si esto sucede, simplemente reinícielo y funcionará bien.

EDITAR: Esto puede ayudar a convertirlo en un atajo de teclado: Enlace

Un problema en particular con su AppleScript es que está asumiendo que cuando se abren las preferencias de Accesibilidad, estará en Pantalla, sin embargo, es posible que no, ya que estará en lo que se seleccionó en último lugar. Como ejemplo, si fue el último en Zoom, se abrirá en Zoom y mostrará un error con: "Error de AppleScript Los eventos del sistema obtuvieron un error: no se puede obtener la casilla de verificación "Usar escala de grises" de la ventana "Accesibilidad" del proceso "Preferencias del sistema "."
Gracias @user3439894, no soy tan bueno con AppleScript
@CreeperzEdge, muchas gracias por la respuesta. El enlace para hacer un atajo de teclado fue realmente útil.

Usé el script de la respuesta de @CreeperzEdge y tuvo un poco de retraso en mi computadora. He cambiado ligeramente ese script a:

tell application "System Preferences" to reveal anchor "Seeing_Display" of pane id "com.apple.preference.universalaccess"
tell application "System Preferences"
    activate
    tell application "System Events" to tell process "System Preferences"
        click the checkbox "Use grayscale" of window "Accessibility"
    end tell
end tell

tell application "System Preferences" to quit

De alguna manera

tell application "System Preferences" to reveal anchor "Seeing_Display" of pane id "com.apple.preference.universalaccess"

es más rápido que

tell application "System Preferences"
    activate
    reveal anchor "Seeing_Display" of pane id "com.apple.preference.universalaccess"
end tell

Sería curioso acerca de la experiencia de otros.

No tengo idea de cómo se dio cuenta de esto, pero su solución funciona más rápido, sin necesidad de una delay 1línea. Lo guardé como una aplicación con un acceso directo a través del servicio Automator .

Descubrí que se necesitaba un retraso de 1 segundo para que funcionara para mí.

tell application "System Preferences"
    activate
    reveal anchor "Seeing_Display" of pane "com.apple.preference.universalaccess"
    delay 1
    tell application "System Events" to tell process "System Preferences"
        click the checkbox "Use grayscale" of window "Accessibility"
    end tell
end tell
tell application "System Preferences" to quit

He creado una aplicación para facilitar este proceso. Le permite alternar la visualización en escala de grises desde la barra de estado. Es un envoltorio alrededor del AppleScript mencionado en las respuestas escritas usando PyObjC. Lo he probado para que funcione en macOS Mojave.

Puedes descargarlo desde aquí . El código fuente está aquí .

Nota : debido a las restricciones de Apple, la aplicación necesita tres tipos de permisos para funcionar: a) permitir abrir una aplicación de un desarrollador no identificado b) permitir el acceso a los eventos del sistema. c) permisos de accesibilidad.

Para cualquiera que se encuentre con este hilo con una Mac más nueva, modifiqué el AppleScript para hacer frente a la nueva interfaz de usuario de una pestaña:

tell application "System Preferences"
    set the current pane to pane id "com.apple.preference.universalaccess"
    delay 0.7 #needs time to open universal access
    tell application "System Events" to tell process "System Preferences" to tell window "Accessibility"
        select row 5 of table 1 of scroll area 1 #open display preferences
        click radio button "Color Filters" of tab group 1 of group 1
        click checkbox "Enable Color Filters" of tab group 1 of group 1
    end tell
end tell
tell application "System Preferences" to quit

También creé una aplicación que hace esta tarea con 1 clic: Escala de grises . Si alguien quiere que haga una versión para versiones anteriores (High Sierra y anteriores), haga un comentario en esta publicación.