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

25

Ich schalte die Einstellung "Alle F1, F2 als Standardtasten verwenden" sehr oft um und möchte sie über ein Skript (oder eine Tastenkombination) automatisieren. Ist es möglich? Ich habe versucht, die richtigen Argumente für Google, 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.

Jakub Roztocil
quelle

Antworten:

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"

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 abzumelden und wieder anzumelden.

Lri
quelle
4
Ich habe dieses Skript mit Automator als App gepackt, damit es schnell von Spotlight ausgeführt werden kann: github.com/jkbr/macos-fn-toggle
Jakub Roztocil
@jkbr Deine App auf Github ist genau das, wonach ich gesucht habe. Vielen Dank!
mdwhatcott
1
Sie können ein Skript auch in AppleScript Editor als Anwendung speichern. Fügen Sie das Skript einfach in AppleScript Editor ein, drücken Sie ⌘S und stellen Sie das Format auf application ein.
Lri
Als weitere Alternative können Sie im Automator einen neuen "Dienst" erstellen, den Befehl "Applescript ausführen" hinzufügen und an der angegebenen Stelle einfügen (* Ihr Skript ist hier abgelegt *). Speichern Sie, und dann wird das Menü Dienste in allen Anwendungen fn enthalten :)
Spyder
2
Auf Mavericks wird folgende Fehlermeldung angezeigt: "AppleScript Editor darf nicht auf Hilfsprogramme zugreifen." Sie müssen also auf der Registerkarte "Datenschutz" zu "Sicherheit und Datenschutz" wechseln, die Option "Verfügbarkeit" auswählen und Ihre App dazu aktivieren. Sie müssen ein Administratorkennwort eingeben, um das Schloss zu öffnen.
9

Ich kenne mich mit Skripten nicht aus, aber mit einigem praktischen Reverse-Engineering und Googeln habe ich das gemacht, da mir die vorhandenen AppleScript-GUI-Inhalte nicht gefallen haben:

https://github.com/nelsonjchen/fntoggle

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

Rufen Sie es von einem beliebigen Ort aus (ControlPlane, Automator shusw.) auf, indem Sie fntoggle onoder ausführen fntoggle off.

Für dieses Skript muss der GUI-Zugriff nicht aktiviert sein. Es ist auch nicht erforderlich, sich aus- und wieder einzuloggen.

Crazysim
quelle
Funktioniert das noch in Sierra? Ich arbeite hier nicht.
Warren P
@WarrenP Dieses Problem ist möglicherweise aufschlussreich. github.com/nelsonjchen/fntoggle/issues/4
crazysim
4

Sie können den aktuellen Status wie folgt 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 erst nach einem Neustart. (Ich habe 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, jemand mit mehr Wissen darüber, was diese plist-Datei liest, könnte ein Skript schreiben, um alles, was diese plist liest, zu töten und neu zu starten, wodurch die Änderung bestätigt werden sollte.

user2245192
quelle
Danke, das ist der richtige Schlüssel. Eine direkte Änderung scheint das Verhalten jedoch nicht zu ändern.
Jakub Roztocil
hilft nicht, obwohl neu gestartet
Daniel
1

Eigentlich musst du keine App mit Spotlight oder etwas anderem ausführen. Meiner Meinung nach ist der beste Weg:

  1. Erstellen Sie einen neuen Service in Automator
  2. Ziehen: "Apple Script ausführen
  3. Bei "Service erhält ausgewählt": Keine Eingabe wählen
  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. Speichern als "Ihr Name"

  6. Öffnen Sie die Systemeinstellungen → Tastatur → Verknüpfungen
  7. Im linken Menü wählen Sie: "Dienste"
  8. Scrollen Sie rechts ganz nach unten zu General 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 die Einstellungen selbst aufrufen.

Nachtrag: Bei EL Capitan funktioniert dies nur, wenn Automator im Fokus steht. Andernfalls (z. B. wenn Sie das Skript über eine Tastenkombination aufrufen) wird die Meldung "Bei der Aktion" AppleScript ausführen "ist ein Fehler aufgetreten" angezeigt.

Teaman
quelle
0

Einige hilfreiche AppleScript- Befehle : Applescript zum Umschalten der Tasten F1-F11 als Funktionstasten - MacRumors Forums


quelle
Willkommen bei Ask Different! Sie haben dies als Antwort gepostet. Dies gilt nur für Dinge, 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 extrahieren Sie ihn. Die Idee ist, die Antwort allein zu lassen. Bitte werfen Sie einen Blick auf die FAQs für weitere Informationen. Vielen Dank.
Nathan Greenstein
0

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 und fügen Sie es zu Anwendungen hinzu. Um zu vermeiden, dass der AppleScript-Editor keinen unterstützenden Zugriff hat, gehen Sie zu Systemeinstellungen-> Sicherheit und Datenschutz-> Datenschutz-Tipp-> Eingabehilfen und fügen Sie Ihre App hinzu.

Wenn Sie wie ich eine Verknüpfung möchten, 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.

Rwanou
quelle