Schalten Sie per Skript "Alle F1, F2 als Standardtasten verwenden" um

Ich schalte die Einstellung "Alle F1, F2 als Standardtasten verwenden" sehr oft um und möchte dies über ein Skript (oder eine Tastenkombination) automatisieren. Ist es möglich? Ich habe versucht, die richtigen Argumente für Google zu finden, defaults write ...aber erfolglos.

fn-Einstellungen


Update: Am Ende habe ich https://github.com/jkbrzt/macos-fn-toggle basierend auf den Antworten hier erstellt.

Update II: Es gibt jetzt auch – https://github.com/Pyroh/Fluor – eine wirklich nette Menüleisten-App, mit der Sie das Verhalten der Fn-Tasten der Tastatur abhängig von der aktiven Anwendung automatisch ändern können.

Antworten (7)

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"

Sie könnten auch verwenden defaults write -g com.apple.keyboard.fnState -bool true, aber ich kenne keine Möglichkeit, die Änderungen zu übernehmen, ohne sich ab- und wieder anzumelden.

Ich habe dieses Skript mit Automator als App gepackt, damit es schnell von Spotlight aus ausgeführt werden kann: github.com/jkbr/macos-fn-toggle
@jkbr Ihre App auf Github ist genau das, wonach ich gesucht habe. Danke!
Sie können ein Skript auch vom AppleScript Editor aus als Anwendung speichern. Fügen Sie einfach das Skript in AppleScript Editor ein, drücken Sie ⌘S und stellen Sie das Format auf Anwendung ein.
Als weitere Alternative können Sie in Automator einen neuen "Dienst" erstellen, den Befehl "Applescript ausführen" hinzufügen und diesen dort einfügen, wo er steht (* Ihr Skript gehört hier *). Speichern Sie, und dann enthält das Dienstmenü in allen Anwendungen fn :)
Auf Mavericks erhalten Sie eine Fehlermeldung wie: „AppleScript Editor ist kein unterstützender Zugriff gestattet.“ Sie müssen also auf der Registerkarte „Datenschutz“ zu „Sicherheit und Datenschutz“ gehen, Barrierefreiheit auswählen und Ihrer App dies ermöglichen. Sie müssen das Admin-Passwort eingeben, um das Schloss zu öffnen.
Zur technischen Referenz: com.apple.keyboard.fnState ist in der Datei ~/Library/Preferences/.GlobalPreferences.plist gespeichert

Ich weiß nichts über Skripte, aber mit etwas praktischem Reverse-Engineering und Googeln habe ich dies gemacht, da mir das vorhandene AppleScript-GUI-Zeug, das da draußen war, nicht gefiel:

https://github.com/nelsonjchen/fntoggle

Kompilierte Binärdatei (in Ihren PATH werfen oder wenn Sie nicht wissen, was das ist /usr/local/bin/: https://github.com/nelsonjchen/fntoggle/releases

Rufen Sie es von irgendetwas (ControlPlane, Automator sh, usw.) auf, indem Sie fntoggle onoder ausführen fntoggle off.

Für dieses Skript muss kein GUI-Zugriff aktiviert sein. Es ist auch kein Aus- und Wiedereinloggen erforderlich.

Funktioniert das noch in Sierra? Arbeitet hier nicht.
@WarrenP Dieses Problem könnte aufschlussreich sein. github.com/nelsonjchen/fntoggle/issues/4

Den aktuellen Stand können Sie nachfolgend ablesen. (1 für F-Tasten, 0 für Medien/Helligkeit usw.)

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

Sie können es schreiben, es ändert sich jedoch nicht, bis Sie neu starten. (Ich habe stattdessen versucht, Dock und Finder zu töten, kein Glück)

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

Ich vermute, dass jemand mit mehr Wissen darüber, was diese Plist-Datei liest, ein Skript schreiben könnte, um alles, was diese Plist liest, zu beenden und neu zu starten, wodurch die Änderung bestätigt werden sollte.

Danke, das ist der richtige Schlüssel. Das direkte Ändern scheint jedoch das Verhalten nicht zu ändern.
hilft nicht, obwohl neu gestartet

Eigentlich müssen Sie keine App mit Spotlight oder ähnlichem ausführen. Der beste Weg ist meiner Meinung nach:

  1. Erstellen Sie einen neuen Dienst in Automator
  2. Ziehen: „Apple-Skript ausführen
  3. Wählen Sie im Feld „Service erhält ausgewählt“ keine Eingabe aus
  4. Fügen Sie diesen Code aus dieser anderen Antwort ein :

    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. Als "Ihr Name" speichern

  6. Öffnen Sie die Systemeinstellungen → Tastatur → Shortcuts
  7. Wählen Sie im linken Menü: "Dienste"
  8. Scrollen Sie rechts ganz nach unten zu Allgemein und weisen Sie Ihrem Dienst einen eindeutigen Hotkey zu, ich wähle cmd+Shift+L

  9. Das ist es! Es ist nicht sehr schnell oder so, aber Sie müssen keine App ausführen oder selbst zu den Einstellungen gehen.

Nachtrag: Bei EL Capitan funktioniert dies nur, wenn Automator im Fokus ist, ansonsten (zB wenn man das Skript über ein Tastenkürzel aufruft) kommt die Meldung "Bei der Aktion „AppleScript ausführen“ ist ein Fehler aufgetreten".

Etwas AppleScript, das helfen könnte: Applescript zum Umschalten der Tasten F1-F11 als Funktionstasten - MacRumors Forums

Willkommen bei Ask Different! Sie haben dies als Antwort gepostet, die nur für Dinge gilt, die die gestellte Frage direkt beantworten. Antworten auf Ask Different müssen mehr als nur ein Link sein. Es ist in Ordnung, einen Link einzufügen, aber bitte fassen Sie ihn in der Antwort zusammen oder fassen Sie ihn aus. Die Idee ist, die Antwort allein stehen zu lassen. Bitte werfen Sie einen Blick auf die FAQs für weitere Informationen. Danke.

Ich habe eine (kostenlose) App geschrieben, die genau das tut, wonach Sie suchen. Sie können es direkt von http://www.techmasterdesign.com/fnswitch/ herunterladen .

Der Quellcode ist hier verfügbar: http://www.techmasterdesign.com/forum/viewtopic.php?f=2&t=668

Bitte beachte nur, dass es einige Richtlinien gibt, wenn du dein eigenes Produkt/Blog bewerben oder empfehlen möchtest . Wenn Sie sie befolgen, vermeiden Sie den Eindruck, dass Sie Spam versenden. Könnten Sie bitte bearbeiten , um Ihre Zugehörigkeit explizit anzugeben? Danke.
Ich bin mir nicht sicher, warum die Abstimmung abgelehnt wurde, wenn dies eine App ist, die sich direkt mit dem Problem des OP befasst. Eine geringfügige Bearbeitung der Antwort, um die Zugehörigkeit anzugeben, wäre definitiv hilfreich, aber keine Ablehnung wert. +1 für das, was ein gutes Stück Code und Beitrag zu sein scheint.
Es gibt nur eine Stimme dafür, also kann jeder die -1 löschen, wenn er denkt, dass die Antwort klar und nützlich ist. @Allan

Angesichts aller Antworten habe ich die folgende Lösung für Yosemite angewendet.

Mit Automator habe ich eine App mit folgendem Code erstellt:

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"

Speichern Sie es, fügen Sie es den Anwendungen hinzu. Um die Meldung „AppleScript Editor darf keinen unterstützenden Zugriff zuzulassen“ zu vermeiden, gehen Sie zu Systemeinstellungen->Sicherheit und Datenschutz->Datenschutz->Eingabehilfen und fügen Sie Ihre App hinzu.

Wenn Sie wie ich eine Verknüpfung wünschen, erstellen Sie in Automator ein neues Apple-Skript mit Launch App und wählen Sie Ihre App aus. Gehen Sie dann zurück zu Systemeinstellungen->Tastatur->Verknüpfungsregisterkarten->Diensteintrag und weisen Sie Ihrem Skript am Ende der Liste eine Verknüpfung zu.