Basculer «Utiliser tous les F1, F2 comme clés standard» via le script

25

Je bascule très souvent le paramètre "Utiliser tous les F1, F2 comme touches standard" et je voudrais l'automatiser via un script (ou un raccourci clavier). C'est possible? J'ai essayé de trouver les bons arguments sur Google, defaults write ...mais sans succès.

paramètres fn


Mise à jour: j'ai fini par créer https://github.com/jkbrzt/macos-fn-toggle sur la base des réponses ici.

Mise à jour II: il y a maintenant aussi - https://github.com/Pyroh/Fluor - une application de barre de menu vraiment sympa qui vous permet de changer automatiquement le comportement des touches fn du clavier en fonction de l'application active.

Jakub Roztocil
la source

Réponses:

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"

Vous pouvez également utiliser defaults write -g com.apple.keyboard.fnState -bool true, mais je ne connais aucun moyen d'appliquer les modifications sans vous déconnecter puis vous reconnecter.

Lri
la source
4
J'ai emballé ce script en tant qu'application à l'aide d'Automator afin qu'il puisse être exécuté rapidement à partir de Spotlight: github.com/jkbr/macos-fn-toggle
Jakub Roztocil
@jkbr Votre application sur github est exactement le genre de chose que je cherchais. Merci!
mdwhatcott
1
Vous pouvez également enregistrer un script en tant qu'application à partir d'AppleScript Editor. Collez simplement le script dans AppleScript Editor, appuyez sur ⌘S et définissez le format sur l'application.
Lri
Comme encore une autre alternative, dans l'automate créez un nouveau "service", ajoutez la commande Run Applescript et collez-la là où elle est indiquée (* Votre script va ici *). Enregistrez, puis le menu des services dans toutes les applications comprendra fn :)
Spyder
2
Sur Mavericks, vous obtenez une erreur du type: "AppleScript Editor n'est pas autorisé à accéder à l'aide." Vous devez donc aller dans «Sécurité et confidentialité» dans l'onglet Confidentialité, sélectionner Accessibilité et autoriser votre application à le faire. Vous devrez fournir un mot de passe administrateur pour ouvrir le verrou.
10

Je ne connais pas le script, mais avec une ingénierie inverse et une recherche sur Google très pratiques, je l'ai fait car je n'aimais pas les éléments graphiques AppleScript existants qui étaient là-bas:

https://github.com/nelsonjchen/fntoggle

Binaire compilé (lancez dans votre CHEMIN ou si vous ne savez pas ce que c'est alors /usr/local/bin/): https://github.com/nelsonjchen/fntoggle/releases

Appelez-le depuis n'importe quoi (ControlPlane, Automator sh, etc.) en exécutant fntoggle onou fntoggle off.

Ce script ne nécessite pas que l'accessibilité de l'interface graphique soit activée. Il ne nécessite pas non plus de déconnexion et de reconnexion.

crazysim
la source
Est-ce que cela fonctionne toujours en Sierra? Ne fonctionne pas ici.
Warren P
@WarrenP Ce problème peut être instructif. github.com/nelsonjchen/fntoggle/issues/4
crazysim
Merci! Fonctionne sur Mojave 10.14.6
aztack il y a
4

Vous pouvez lire l'état actuel avec ce qui suit. (1 pour les touches F, 0 pour les médias / luminosité, etc.)

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

Vous pouvez l'écrire, mais il ne changera pas jusqu'à ce que vous redémarriez. (J'ai essayé de tuer Dock et Finder à la place, pas de chance)

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

Je soupçonne que quelqu'un avec plus de connaissances sur ce qui lit ce fichier plist pourrait écrire un script pour tuer et redémarrer tout ce qui lit ce plist, ce qui devrait lui faire reconnaître le changement.

user2245192
la source
Merci, c'est la bonne clé. Le changer directement ne semble cependant pas changer le comportement.
Jakub Roztocil
n'aide pas bien que redémarré
Daniel
1

En fait, vous n'avez pas besoin d'exécuter une application avec un projecteur ou quoi que ce soit, la meilleure façon à mon avis est de:

  1. Créer un nouveau service dans Automator
  2. Faites glisser: "Exécuter le script Apple
  3. Dans le "Service reçu sélectionné": ne choisissez aucune entrée
  4. Collez ce code à partir de cette autre réponse :

    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. Enregistrer sous "votre nom"

  6. Ouvrez les Préférences Système → Clavier → Raccourcis
  7. Dans le menu de gauche, choisissez: "Services"
  8. À droite, faites défiler jusqu'au général et attribuez à votre service une touche de raccourci unique, je choisis cmd + shift + L

  9. C'est ça! Ce n'est pas très rapide ou quoi que ce soit, mais vous n'avez pas besoin d'exécuter une application ou d'aller aux Préférences vous-même.

Addendum: Avec EL Capitan, cela ne fonctionne que lorsque Automator est actif, sinon (par exemple, si vous appelez le script via un raccourci clavier), vous obtenez le message "L'action" Exécuter AppleScript "a rencontré une erreur".

Teaman
la source
0

Quelques AppleScript qui pourraient aider: Applescript pour basculer les touches F1-F11 en touches de fonction - MacRumors Forums


la source
Bienvenue sur Ask Different! Vous avez posté ceci en tant que réponse, uniquement pour les éléments qui répondent directement à la question posée. Les réponses à Ask Different doivent être plus qu'un simple lien. Il est correct d'inclure un lien, mais veuillez le résumer ou l'extraire dans la réponse. L'idée est de rendre la réponse autonome. Veuillez consulter la FAQ pour plus d'informations. Merci.
Nathan Greenstein
0

Compte tenu de toutes les réponses, j'ai appliqué la solution suivante pour Yosemite.

À l'aide d'Automator, j'ai créé une application avec le code suivant:

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"

Enregistrez-le, ajoutez-le aux applications. Pour éviter que "AppleScript Editor ne soit pas autorisé à accéder à l'aide à l'assistance.", Accédez à Préférences Système-> Sécurité et confidentialité-> Tapez sur Confidentialité-> Entrée d'accessibilité et ajoutez votre application.

Si, comme moi, vous souhaitez un raccourci, dans Automator, créez un nouveau script Apple avec Launch App et sélectionnez votre application. Revenez ensuite à Préférences Système-> Clavier-> Onglets de raccourcis-> Entrée de service et à la fin de la liste, attribuez un raccourci à votre script.

Rwanou
la source