
Testei isso em duas máquinas rodando Mavericks (10.9.4), com e sem teclado externo, e em todos os casos o comportamento é conforme descrito abaixo.
SobPreferências do Sistema > Teclado > Atalhosna seção "Mission Control" habilitei o atalho "Show Desktop" e atribuí-o a F5. Da mesma forma, atribuí "Mostrar painel" a F6.
Independentemente de como "Usar todas as teclas F1, F2, etc. como teclas de função padrão" estiver definido, ofna tecla é ignorada para esses atalhos e a ação do atalhosempreocorre, impossibilitando que F5 e F6 atuem "normalmente" (como em Terminal.app). Vale a pena notar que as teclas de atalho "padrão" (por exemplo, F3 para Mission Control, F4 para LaunchPad)fazertrabalhar comfnconforme desejado/esperado: segurando ofnmodificador enquanto pressiona essas teclas "inverte" o comportamento (dependendo de como a opção "Usar todas as teclas F1, F2, etc." está definida).
Eu instalei o "KeyRemap4MacBook" (agora chamadoMosquetão) e habilitou o registro de depuração de eventos do teclado com:
sudo sysctl -w keyremap4macbook.debug=1
F5 semfnchave
Jul 17 09:07:54 KeyboardEventCallback [sending]: eventType 10, flags 0x00000000, key 0x0060, kbdType 46, repeat = 0
Jul 17 09:07:54 KeyboardEventCallback [sending]: eventType 11, flags 0x00000000, key 0x0060, kbdType 46, repeat = 0
F5 comfnchave
Jul 17 09:07:58 KeyboardEventCallback [sending]: eventType 12, flags 0x00800000, key 0x003f, kbdType 46, repeat = 0
Jul 17 09:07:59 KeyboardEventCallback [sending]: eventType 10, flags 0x00800000, key 0x0060, kbdType 46, repeat = 0
Jul 17 09:07:59 KeyboardEventCallback [sending]: eventType 11, flags 0x00800000, key 0x0060, kbdType 46, repeat = 0
Jul 17 09:08:01 KeyboardEventCallback [sending]: eventType 12, flags 0x00000000, key 0x003f, kbdType 46, repeat = 0
E para comparação...
F1 semfnchave
Jul 17 09:09:11 KeyboardEventCallback [sending]: eventType 10, flags 0x00000000, key 0x0091, kbdType 46, repeat = 0
Jul 17 09:09:11 KeyboardEventCallback [sending]: eventType 11, flags 0x00000000, key 0x0091, kbdType 46, repeat = 0
F1 comfnchave
Jul 17 09:09:16 KeyboardEventCallback [sending]: eventType 12, flags 0x00800000, key 0x003f, kbdType 46, repeat = 0
Jul 17 09:09:17 KeyboardEventCallback [sending]: eventType 10, flags 0x00800000, key 0x007a, kbdType 46, repeat = 0
Jul 17 09:09:17 KeyboardEventCallback [sending]: eventType 11, flags 0x00800000, key 0x007a, kbdType 46, repeat = 0
Jul 17 09:09:19 KeyboardEventCallback [sending]: eventType 12, flags 0x00000000, key 0x003f, kbdType 46, repeat = 0
Observe que com F1, quando ofnchave (código de chave 0x3F) está inativa, o código de chave é 0x7A ("F1") em vez de 0x91 ("BRIGHTNESS_DOWN"), mas para F5, a chave permanece 0x60 ("F5").
Parece que o que quer que esteja lidando com o pré-painel de atalhos de teclado não tem como incluir o estado dofnmodificador.
Então aqui está minha pergunta: existe alguma maneira de atribuir atalhos de teclado às teclas de função para que funcionem como os atalhos padrão do sistema e respeitem osfnchave como uma alternância entre o comportamento "normal" e "atalho"?
Responder1
Graças a muitoexemplos de arquivos de configuraçãoem Mosquetão(anteriormente conhecido como KeyRemap4MacBook
), consegui criar o seguinte e adicioná-lo ao meu private.xml
arquivo para obter o comportamento desejado, tanto em um teclado externo quanto no teclado integrado de um MacBook:
<root>
<item>
<name>F5 to Show Desktop (Fn+F5 is still F5)</name>
<appendix>Enables F5 (Shift+F5 on laptops) as a Show Desktop shortcut</appendix>
<identifier>private.f5_to_show_desktop</identifier>
<autogen>--KeyToKey-- KeyCode::F5, ModifierFlag::FN, KeyCode::F5</autogen>
<autogen>--KeyToKey-- ConsumerKeyCode::KEYBOARDLIGHT_LOW, ModifierFlag::FN, KeyCode::F5</autogen>
<autogen>--KeyToKey-- KeyCode::F5, KeyCode::MISSION_CONTROL, ModifierFlag::COMMAND_L, Option::NOREPEAT</autogen>
<autogen>--KeyToKey-- ConsumerKeyCode::KEYBOARDLIGHT_LOW, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_SHIFT, KeyCode::MISSION_CONTROL, ModifierFlag::COMMAND_L, Option::NOREPEAT</autogen>
</item>
<item>
<name>F6 to Show Dashboard (Fn+F6 is still F6)</name>
<appendix>Enables F6 (Shift+F6 on laptops) as a Show Dashboard shortcut</appendix>
<identifier>private.f6_to_show_dashboard</identifier>
<autogen>--KeyToKey-- KeyCode::F6, ModifierFlag::FN, KeyCode::F6</autogen>
<autogen>--KeyToKey-- ConsumerKeyCode::KEYBOARDLIGHT_HIGH, ModifierFlag::FN, KeyCode::F6</autogen>
<autogen>--KeyToKey-- KeyCode::F6, KeyCode::DASHBOARD, Option::NOREPEAT</autogen>
<autogen>--KeyToKey-- ConsumerKeyCode::KEYBOARDLIGHT_HIGH, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_SHIFT, KeyCode::DASHBOARD, Option::NOREPEAT</autogen>
</item>
</root>
Observe que o private.xml
arquivo pode ser acessado rapidamente na guia “Diversos e Desinstalar” da janela do Karabiner e há um ReloadXML
botão na guia “Alterar chave”.