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.

Jakub Roztocil
fuente

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.

Lri
fuente
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.

crazysim
fuente
¿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.

usuario2245192
fuente
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".

Teaman
fuente
0

Algunos AppleScript que podrían ayudar: Applescript para alternar las teclas F1-F11 como teclas de función - foros de MacRumors


fuente
¡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.

Ruanda
fuente