Alternar "Usar todos los F1, F2 como teclas estándar" a través de la secuencia de comandos


25

Alternar la configuración "Usar todos F1, F2 como teclas estándar" muy a menudo y me gustaría automatizarlo a través de un script (o un atajo de teclado). ¿Es posible? He intentado buscar en Google los argumentos correctos, defaults write ...pero sin éxito.

ajustes fn


Actualización: terminé creando https://github.com/jkbrzt/macos-fn-toggle basado en las respuestas aquí.

Actualización II: ahora también hay - https://github.com/Pyroh/Fluor - una aplicación de barra de menú realmente agradable que te permite cambiar automáticamente el comportamiento de las teclas fn del teclado dependiendo de la aplicación activa.

Respuestas:


25
tell application "System Preferences"
    reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
end tell
tell application "System Events" to tell process "System Preferences"
    click checkbox 1 of tab group 1 of window 1
end tell
quit application "System Preferences"

También podría usar defaults write -g com.apple.keyboard.fnState -bool true, pero no conozco ninguna forma de aplicar los cambios sin cerrar sesión y volver a iniciarla.


44
Empaqué este script como una aplicación que usa Automator para que pueda ejecutarse rápidamente desde Spotlight: github.com/jkbr/macos-fn-toggle
— Jakub Roztocil

@jkbr Su aplicación en github es justo lo que estaba buscando. ¡Gracias!
— mdwhatcott

1
También puede guardar un script como aplicación desde el Editor AppleScript. Simplemente pegue el script en el Editor AppleScript, presione ⌘S y configure el formato para la aplicación.
— Lri

Como otra alternativa más, en Automator cree un nuevo "servicio", agregue el comando Ejecutar Applescript y péguelo en el lugar donde dice (* Su script va aquí *). Guarde, y luego el menú de servicios en todas las aplicaciones incluirá fn :)
— Spyder

2
En Mavericks aparece un error como: "El Editor AppleScript no tiene acceso de asistencia". Por lo tanto, debe ir a "Seguridad y privacidad" en la pestaña Privacidad, seleccionar Accesibilidad y permitir que su aplicación lo haga. Deberá proporcionar una contraseña de administrador para abrir el bloqueo.

10

No conozco el script, pero con algunas prácticas técnicas de ingeniería inversa y Google, hice esto ya que no me gustaban las cosas existentes de la GUI de AppleScript que existían:

https://github.com/nelsonjchen/fntoggle

Binario compilado (tíralo en tu RUTA o si no sabes qué es eso entonces /usr/local/bin/): https://github.com/nelsonjchen/fntoggle/releases

Llámelo desde cualquier lugar (ControlPlane, Automator sh, etc.) ejecutando fntoggle ono fntoggle off.

Este script no requiere que la accesibilidad de la GUI esté activada. Tampoco requiere cerrar sesión y volver a iniciarla.


¿Esto todavía funciona en Sierra? No estoy trabajando aquí.
— Warren P

@WarrenP Este problema puede ser esclarecedor. github.com/nelsonjchen/fntoggle/issues/4
— crazysim

¡Gracias! Funciona en Mojave 10.14.6
— aztack hace

4

Puede leer el estado actual con lo siguiente. (1 para teclas F, 0 para medios / brillo, etc.)

defaults read "Apple Global Domain" "com.apple.keyboard.fnState"

Puede escribirlo, sin embargo, no cambiará hasta que reinicie. (Intenté matar a Dock and Finder en su lugar, no tuve suerte)

defaults write "Apple Global Domain" "com.apple.keyboard.fnState" "1" ## F1 F2 etc
defaults write "Apple Global Domain" "com.apple.keyboard.fnState" "0" ## Brightness/Media

Sospecho que alguien con más conocimiento sobre lo que lee este archivo plist podría escribir un script para matar y reiniciar lo que lea este plist, lo que debería hacer que reconozca el cambio.


Gracias, esa es la clave correcta. Sin embargo, cambiarlo directamente no parece cambiar el comportamiento.
— Jakub Roztocil

no ayuda aunque se reinicia
— Daniel

1

En realidad, no tienes que ejecutar ninguna aplicación con Spotlight ni nada, la mejor manera en mi opinión es:

  1. Crear nuevo servicio en Automator
  2. Arrastrar: "Ejecutar script de Apple
  3. En "El servicio recibe seleccionado": no seleccione ninguna entrada
  4. Pegue este código de esta otra respuesta :

    tell application "System Preferences"
    reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
    end tell
    tell application "System Events" to tell process "System Preferences"
    click checkbox 1 of tab group 1 of window 1
    end tell
    quit application "System Preferences" 
  5. Guardar como "tu nombre"

  6. Abra Preferencias del sistema → Teclado → Atajos
  7. En el menú de la izquierda, elija: "Servicios"
  8. A la derecha, desplácese hasta General y asigne a su servicio alguna tecla de acceso rápido única. Elijo cmd + shift + L

  9. ¡Eso es! No es muy rápido ni nada, pero no tiene que ejecutar ninguna aplicación o ir a las Preferencias usted mismo.

Anexo: Con EL Capitan esto funciona solo cuando Automator está enfocado, de lo contrario (por ejemplo, si invoca el script a través de un atajo de teclado) aparece el mensaje "La acción" Ejecutar AppleScript "encontró un error".


0

¡Bienvenido a Ask Different! Has publicado esto como una respuesta, que es solo para las cosas que responden directamente a la pregunta formulada. Las respuestas a Ask Different deben ser más que un simple enlace. Está bien incluir un enlace, pero resumirlo o extraerlo en la respuesta. La idea es hacer que la respuesta sea independiente. Por favor, eche un vistazo a las preguntas frecuentes para obtener más información. Gracias.
— Nathan Greenstein

0

Dadas todas las respuestas, apliqué la siguiente solución para Yosemite.

Usando Automator, creé una aplicación con el siguiente código:

tell application "System Preferences"
reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
end tell
tell application "System Events" to tell process "System Preferences"
click checkbox 1 of tab group 1 of window 1
end tell
quit application "System Preferences"

Guárdelo, agréguelo a Aplicaciones. Para evitar que "AppleScript Editor no tenga acceso de asistencia", vaya a Preferencias del sistema-> Seguridad y privacidad-> Privacidad, toque-> Entrada de accesibilidad y agregue su aplicación.

Si, como yo, desea un acceso directo, cree en Automator un nuevo Apple Script con Launch App y seleccione su aplicación. Luego regrese a Preferencias del sistema-> Teclado-> Pestañas de acceso directo-> Entrada de servicio y al final de la lista, asigne un acceso directo a su secuencia de comandos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.