Przełącz „Używaj wszystkich F1, F2 jako standardowych klawiszy” za pomocą skryptu

25

Bardzo często przełączam ustawienie „Używaj wszystkich F1, F2 jako standardowych klawiszy” i chciałbym zautomatyzować je za pomocą skryptu (lub skrótu klawiaturowego). Czy to możliwe? Próbowałem znaleźć w Google odpowiednie argumenty, defaults write ...ale bezskutecznie.

ustawienia fn


Aktualizacja: Skończyłem tworzenie https://github.com/jkbrzt/macos-fn-toggle na podstawie odpowiedzi tutaj.

Aktualizacja II: Teraz jest też - https://github.com/Pyroh/Fluor - naprawdę fajna aplikacja paska menu, która pozwala automatycznie zmieniać zachowanie klawiszy fn klawiatury w zależności od aktywnej aplikacji.

Jakub Roztocil
źródło

Odpowiedzi:

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"

Możesz także użyć defaults write -g com.apple.keyboard.fnState -bool true, ale nie znam sposobu na wprowadzenie zmian bez wylogowania i ponownego zalogowania.

Lri
źródło
4
Spakowałem ten skrypt jako aplikację za pomocą Automatora, aby można go było szybko uruchomić z Spotlight: github.com/jkbr/macos-fn-toggle
Jakub Roztocil
@jkbr Twoja aplikacja na github to coś, czego szukałem. Dzięki!
mdwhatcott,
1
Możesz także zapisać skrypt jako aplikację z AppleScript Editor. Wystarczy wkleić skrypt do edytora AppleScript, nacisnąć ⌘S i ustawić format na aplikację.
Lri
Jako kolejna alternatywa, w automatorze stwórz nową „usługę”, dodaj polecenie Uruchom Applescript i wklej to tam, gdzie jest napisane (* Twój skrypt idzie tutaj *). Zapisz, a następnie menu usług we wszystkich aplikacjach będzie zawierać fn :)
Spyder
2
W systemie Mavericks pojawia się błąd: „Edytor AppleScript nie ma dostępu wspomagającego”. Musisz więc przejść do „Bezpieczeństwo i prywatność” w zakładce Prywatność, wybrać Dostępność i włączyć w tym celu swoją aplikację. Będziesz musiał podać hasło administratora, aby otworzyć zamek.
9

Nie wiem o skrypcie, ale przy pomocy praktycznej inżynierii wstecznej i Googlinga, zrobiłem to, ponieważ nie podobało mi się istniejące oprogramowanie GUI AppleScript, które tam było:

https://github.com/nelsonjchen/fntoggle

Skompilowany plik binarny (wrzuć do ŚCIEŻKI lub jeśli nie wiesz co to jest /usr/local/bin/): https://github.com/nelsonjchen/fntoggle/releases

Wywołaj go z dowolnego miejsca (ControlPlane, Automator shitp.), Uruchamiając fntoggle onlub fntoggle off.

Ten skrypt nie wymaga włączenia dostępności GUI. Nie wymaga również wylogowania i ponownego zalogowania.

crazysim
źródło
Czy to nadal działa w Sierra? Nie działa tutaj.
Warren P
@WarrenP Ten problem może być pouczający. github.com/nelsonjchen/fntoggle/issues/4
crazysim
4

Możesz odczytać aktualny stan za pomocą następujących elementów. (1 dla klawiszy funkcyjnych, 0 dla mediów / jasności itp.)

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

Możesz to napisać, ale nie zmieni się, dopóki nie uruchomisz ponownie komputera. (Zamiast tego próbowałem zabić Docka i Findera, bez powodzenia)

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

Podejrzewam, że ktoś z większą wiedzą na temat tego, co czyta ten plik listy, może napisać skrypt, aby zabić i zrestartować wszystko, co czyta ten plik listy, co powinno sprawić, że potwierdzi zmianę.

użytkownik2245192
źródło
Dzięki, to jest właściwy klucz. Bezpośrednia zmiana nie wydaje się jednak zmieniać zachowania.
Jakub Roztocil,
nic nie pomaga, chociaż zrestartowano
Daniel
1

W rzeczywistości nie musisz uruchamiać żadnej aplikacji ze światłami reflektorów lub czymkolwiek, moim zdaniem najlepszym sposobem jest:

  1. Utwórz nową usługę w Automatorze
  2. Przeciągnij: „Uruchom skrypt Apple
  3. W „Usługa otrzymano wybrane”: wybierz brak danych wejściowych
  4. Wklej ten kod z innej odpowiedzi :

    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. Zapisz jako „twoje imię”

  6. Otwórz Preferencje systemowe → Klawiatura → Skróty
  7. W menu po lewej stronie wybierz: „Usługi”
  8. Po prawej stronie przewiń w dół do Ogólne i przypisz do usługi unikalny skrót, wybieram cmd + shift + L

  9. To jest to! Nie jest to bardzo szybkie ani nic, ale nie musisz sam uruchamiać żadnych aplikacji ani sam przechodzić do Preferencji.

Dodatek: W przypadku EL Capitan działa to tylko wtedy, gdy program Automator jest ostry, w przeciwnym razie (np. Jeśli wywołasz skrypt za pomocą skrótu klawiaturowego) pojawi się komunikat „Działanie„ Uruchom AppleScript ”napotkało błąd”.

Teaman
źródło
0

Niektóre AppleScript, które mogą pomóc: Applescript do przełączania klawiszy F1-F11 jako klawiszy funkcyjnych - MacRumors Forums


źródło
Witamy, pytaj inaczej! Opublikowałeś to jako odpowiedź, która dotyczy tylko rzeczy, które bezpośrednio odpowiadają na zadane pytanie. Odpowiedzi na Ask Different muszą być czymś więcej niż tylko linkiem. Można dołączyć link, ale proszę streść go lub fragmentuj w odpowiedzi. Chodzi o to, aby odpowiedź była samodzielna. Więcej informacji znajdziesz w często zadawanych pytaniach. Dzięki.
Nathan Greenstein,
0

Biorąc pod uwagę wszystkie odpowiedzi, zastosowałem następujące rozwiązanie dla Yosemite.

Za pomocą Automatora stworzyłem aplikację z następującym kodem:

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"

Zapisz, dodaj do aplikacji. Aby uniknąć sytuacji, w której „Edytor AppleScript nie ma dostępu wspomagającego”, przejdź do Preferencji systemowych-> Bezpieczeństwo i prywatność-> Prywatność stuknij-> wpis Dostępność i dodaj swoją aplikację.

Jeśli tak jak ja, chcesz skrót, to w Automatorze utwórz nowy skrypt Apple z aplikacją Uruchom i wybierz swoją aplikację. Następnie wróć do Preferencji systemowych-> Klawiatura-> Karty skrótów-> Wpis usługi i na końcu listy przypisz skrót do skryptu.

Rwanou
źródło