Alterne "Usar todas as teclas F1, F2 como teclas padrão" via script

25

Alterno a configuração "Usar todas as teclas F1, F2 como teclas padrão" com muita frequência e gostaria de automatizá-la por meio de um script (ou atalho de teclado). É possível? Tentei pesquisar no Google os argumentos certos, defaults write ...mas sem sucesso.

configurações de fn


Atualização: acabei criando https://github.com/jkbrzt/macos-fn-toggle com base nas respostas aqui.

Atualização II: agora também existe - https://github.com/Pyroh/Fluor - um aplicativo de barra de menus muito bom que permite alterar automaticamente o comportamento das teclas fn do teclado, dependendo do aplicativo ativo.

Jakub Roztocil
fonte

Respostas:

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"

Você também pode usar defaults write -g com.apple.keyboard.fnState -bool true, mas não conheço nenhuma maneira de aplicar as alterações sem fazer logoff e logon novamente.

Lri
fonte
4
Eu embalado este script como um aplicativo utilizando o Automator para que ele possa ser rapidamente executado a partir de destaque: github.com/jkbr/macos-fn-toggle
Jakub Roztocil
@jkbr Seu aplicativo no github é exatamente o tipo de coisa que eu estava procurando. Obrigado!
Mdwhatcott
1
Você também pode salvar um script como um aplicativo no AppleScript Editor. Basta colar o script no AppleScript Editor, pressionar ⌘S e definir o formato como aplicativo.
Lri
Como outra alternativa, no automator, crie um novo "serviço", adicione o comando Executar Applescript e cole-o no local onde diz (* Seu script vai aqui *). Salvar e, em seguida, o menu de serviços em todas as aplicações incluirá fn :)
Spyder
2
No Mavericks, você recebe um erro como: "O AppleScript Editor não tem acesso assistido". Portanto, você deve acessar "Segurança e privacidade" na guia Privacidade, selecionar Acessibilidade e ativar seu aplicativo. Você precisará fornecer a senha de administrador para abrir o bloqueio.
9

Eu não sei sobre script, mas com algumas ferramentas úteis de engenharia reversa e pesquisa no Google, fiz isso porque não gostava das coisas existentes da GUI AppleScript existentes:

https://github.com/nelsonjchen/fntoggle

Binário compilado (atire no seu PATH ou se você não souber o que é isso /usr/local/bin/): https://github.com/nelsonjchen/fntoggle/releases

Chame de qualquer coisa (ControlPlane, Automator sh, etc) executando fntoggle onou fntoggle off.

Este script não requer que a acessibilidade da GUI esteja ativada. Também não requer logout e logon novamente.

crazysim
fonte
Isso ainda funciona na Sierra? Não está trabalhando aqui.
Warren P
@WarrenP Esse problema pode ser esclarecedor. github.com/nelsonjchen/fntoggle/issues/4
crazysim 28/11
4

Você pode ler o estado atual com o seguinte. (1 para teclas F, 0 para mídia / brilho etc.)

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

Você pode escrevê-lo, no entanto, ele não será alterado até a reinicialização. (Tentei matar Dock e Finder, sem sorte)

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

Suspeito que alguém com mais conhecimento sobre o que lê esse arquivo plist possa escrever um script para matar e reiniciar o que lê este plist, o que deve fazer com que ele reconheça a alteração.

user2245192
fonte
Obrigado, essa é a chave correta. Mudá-lo diretamente, no entanto, não parece mudar o comportamento.
Jakub Roztocil
não ajuda embora reiniciado
Daniel
1

Na verdade, você não precisa executar nenhum aplicativo com holofotes nem nada, a melhor maneira, na minha opinião, é:

  1. Criar novo serviço no Automator
  2. Arraste: "Executar script da Apple
  3. No "Serviço recebe selecionado": escolha nenhuma entrada
  4. Cole este código nesta outra resposta :

    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. Salvar como "seu nome"

  6. Abra Preferências do Sistema → Teclado → Atalhos
  7. No menu esquerdo, escolha: "Serviços"
  8. À direita, role até o General e atribua ao seu serviço uma tecla de atalho exclusiva, escolho cmd + shift + L

  9. É isso aí! Não é muito rápido nem nada, mas você não precisa executar nenhum aplicativo ou acessar você mesmo as Preferências.

Adendo: Com o EL Capitan, isso funciona apenas quando o Automator está em foco; caso contrário (por exemplo, se você invocar o script por meio de um atalho de teclado), você recebe a mensagem "A ação" Executar AppleScript "encontrou um erro" ".

Teaman
fonte
0

Alguns AppleScript que podem ajudar: Applescript para alternar teclas F1-F11 como teclas de função - MacRumors Forums


fonte
Bem-vindo ao perguntar diferente! Você postou isso como uma resposta, que é apenas para itens que respondem diretamente à pergunta. As respostas no Ask Different precisam ser mais do que apenas um link. Não há problema em incluir um link, mas faça um resumo ou trecho da resposta. A idéia é tornar a resposta independente. Consulte as Perguntas frequentes para obter mais informações. Obrigado.
22612 Nathan Greenstein
0

Dadas todas as respostas, apliquei a seguinte solução para Yosemite.

Usando o Automator, criei um aplicativo com o seguinte 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"

Salve-o e adicione-o a Aplicativos. Para evitar o "AppleScript Editor não é permitido acesso assistido.", Vá para Preferências do sistema-> Segurança e privacidade-> Privacidade, toque em-> Entrada de acessibilidade e adicione seu aplicativo.

Se você gosta de mim, deseja um atalho, no Automator, crie um novo Apple Script com Launch App e selecione seu aplicativo. Depois, volte para Preferências do sistema-> Teclado-> guias Atalhos-> Entrada de serviço e, no final da lista, atribua um atalho ao seu script.

Rwanou
fonte