Eu finalmente comecei a usar Palua e é ótimo.
Paula não está mais disponível, por isso, uso Fluor nos dias de hoje.
No meu MacBook eu tenho uso todas as opções F1 F2, teclas como teclas de função padrão desmarcadas. Eu uso o FunctionFlip para mapear F3 de Expose para Spaces.
No entanto, eu gostaria de usar as teclas de função como teclas de função reais ao trabalhar em ambientes virtualizados como o VirtualBox ou o VMware Fusion. Indo para Sistema > Preferências não é muito conveniente.
Você agora como verificar usar todas as teclas F1 F2 etc. como teclas de função padrão somente quando uma aplicação específica estiver ativa?
Tente combinar FunctionFlip com BetterTouchTool :
Capture IronAHK e use-o para remapear ALL chaves em vez de Preferências do Sistema (a razão é que pode entrar em conflito com as preferências system - >), ele vem com um makefile para compilar facilmente em Mono.
Em seguida, use-o exatamente como o AutoHotkey:
#IfWinActive,,VirtualBox
F1::Send { F1 }
Uma alternativa para Palua é KeyRemap4MacBook :
<?xml version="1.0"?>
<root>
<appdef>
<appname>FKEYS</appname>
<equal>com.vmware.fusion</equal>
<equal>org.virtualbox.app.VirtualBoxVM</equal>
</appdef>
<item>
<name>fkeys</name>
<identifier>fkeys</identifier>
<only>FKEYS</only>
<autogen>__KeyToKey__ KeyCode::BRIGHTNESS_DOWN, KeyCode::F1</autogen>
<autogen>__KeyToKey__ KeyCode::BRIGHTNESS_UP, KeyCode::F2</autogen>
<autogen>__KeyToKey__ KeyCode::EXPOSE_ALL, KeyCode::F3</autogen>
<autogen>__KeyToKey__ KeyCode::LAUNCHPAD, KeyCode::F4</autogen>
<autogen>__ConsumerToKey__ ConsumerKeyCode::KEYBOARDLIGHT_LOW, KeyCode::F5</autogen>
<autogen>__ConsumerToKey__ ConsumerKeyCode::KEYBOARDLIGHT_HIGH, KeyCode::F6</autogen>
<autogen>__ConsumerToKey__ ConsumerKeyCode::MUSIC_PREV, KeyCode::F7</autogen>
<autogen>__ConsumerToKey__ ConsumerKeyCode::MUSIC_PLAY, KeyCode::F8</autogen>
<autogen>__ConsumerToKey__ ConsumerKeyCode::MUSIC_NEXT, KeyCode::F9</autogen>
<autogen>__ConsumerToKey__ ConsumerKeyCode::VOLUME_MUTE, KeyCode::F10</autogen>
<autogen>__ConsumerToKey__ ConsumerKeyCode::VOLUME_DOWN, KeyCode::F11</autogen>
<autogen>__ConsumerToKey__ ConsumerKeyCode::VOLUME_UP, KeyCode::F12</autogen>
<autogen>__KeyToKey__ KeyCode::F1, KeyCode::BRIGHTNESS_DOWN</autogen>
<autogen>__KeyToKey__ KeyCode::F2, KeyCode::BRIGHTNESS_UP</autogen>
<autogen>__KeyToKey__ KeyCode::F3, KeyCode::EXPOSE_ALL</autogen>
<autogen>__KeyToKey__ KeyCode::F4, KeyCode::LAUNCHPAD</autogen>
<autogen>__ConsumerToKey__ KeyCode::F5, ConsumerKeyCode::KEYBOARDLIGHT_LOW</autogen>
<autogen>__ConsumerToKey__ KeyCode::F6, ConsumerKeyCode::KEYBOARDLIGHT_HIGH</autogen>
<autogen>__ConsumerToKey__ KeyCode::F7, ConsumerKeyCode::MUSIC_PREV</autogen>
<autogen>__ConsumerToKey__ KeyCode::F8, ConsumerKeyCode::MUSIC_PLAY</autogen>
<autogen>__ConsumerToKey__ KeyCode::F9, ConsumerKeyCode::MUSIC_NEXT</autogen>
<autogen>__ConsumerToKey__ KeyCode::F10, ConsumerKeyCode::VOLUME_MUTE</autogen>
<autogen>__ConsumerToKey__ KeyCode::F11, ConsumerKeyCode::VOLUME_DOWN</autogen>
<autogen>__ConsumerToKey__ KeyCode::F12, ConsumerKeyCode::VOLUME_UP</autogen>
</item>
</root>
Veja a fonte dos valores do código-chave e configurações predefinidas .
Infelizmente, essa não é uma opção oferecida pela Apple ou FunctionFlip .
No entanto, o autor do FunctionFlip foi obviamente capaz de escrever código que permite a configuração dinâmica das teclas de função para que possa ser feito.
Gostaria de entrar em contato com o autor do FunctionFlip e perguntar se ele poderia adicionar os recursos de que você precisa. Ou seja, controlar o comportamento das teclas de função, dependendo do aplicativo ativo.
Se você se comprometer a doar para o recurso, ele poderá ser implementado mais rapidamente.
Caso contrário, não conheço nenhum outro programa que ofereça essa funcionalidade.
Você pode usar o AppleScript para alternar o estado das teclas de função:
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"
Além disso, você pode tornar este aplicativo específico com a ajuda de Keyboard Maestro . Se for escrito um pequeno tutorial como extrair isso de aqui .
Use o mosquetão
Esta aplicação pode fornecer a funcionalidade exata solicitada pelo OP. A resposta de user495470 sobre o KeyRemap4MacBook foi útil para me apontar na direção certa. No entanto, está desatualizado e não funciona mais como está escrito porque o KeyRemap4MacBook foi atualizado. Agora é chamado de mosquetão . Parece ser bem mantido e é um software livre e de código aberto (não é o caso da BetterTouchTool mencionado em outra resposta que requer pagamento após 45 dias).
Configurando
Primeiro baixe e instale o aplicativo Karabiner. Uma vez instalado, para remapear as teclas de função como teclas de função padrão, você precisará adicionar uma "Modificação-Complexo" nas preferências. Há várias dessas modificações complexas pré-construídas e baixáveis do site do Karabiner, mas você também pode escrever suas próprias no json.
Use o seguinte código e coloque-o em um arquivo (com o nome "functionkeys.json") na pasta ~/.config/karabiner/assets/complex_modifications
. Quando estiver lá, vá para as preferências do Karabiner e clique em Complex-Modifications
e, em seguida, em Add rule
. Você deve ver o texto Function Keys in Terminal Apps
e clique em Enable All
.
Como alterar qual aplicativo em primeiro plano causa o efeito
Este código fornece especificamente funcionalidade padrão chave de função ao usar qualquer um dos vários aplicativos de terminal (e nada ao usar qualquer outro aplicativo). Este código também permite o uso de chave de mídia em aplicativos de terminal usando fn + function key
.
Enquanto o OP perguntava sobre uma aplicação específica genérica, o VirtualBox era mencionado em particular. O código abaixo pode ser alterado para criar a funcionalidade da tecla de função em qualquer aplicativo exigido substituindo o conteúdo de cada instância de "Bundle Identifiers: [ ... ]"
por qualquer aplicativo (s). (O VirtualBox pode ser "^org\.virtualbox\.VirtualBoxVM"
, embora eu não tenha tentado.) Use o Karabiner EventViewer incluído para encontrar o identificador de aplicativo para qualquer aplicativo desejado e, em seguida, conecte os valores.
{
"title": "Function Keys in Terminal Apps",
"rules": [
{
"description": "Use regular function keys in terminal",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "f1"
},
"to": [
{
"key_code": "f1",
"modifiers": [
"fn"
]
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f2"
},
"to": [
{
"key_code": "f2",
"modifiers": [
"fn"
]
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f3"
},
"to": [
{
"key_code": "f3",
"modifiers": [
"fn"
]
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f4"
},
"to": [
{
"key_code": "f4",
"modifiers": [
"fn"
]
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f5"
},
"to": [
{
"key_code": "f5",
"modifiers": [
"fn"
]
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f6"
},
"to": [
{
"key_code": "f6",
"modifiers": [
"fn"
]
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f7"
},
"to": [
{
"key_code": "f7",
"modifiers": [
"fn"
]
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f8"
},
"to": [
{
"key_code": "f8",
"modifiers": [
"fn"
]
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f9"
},
"to": [
{
"key_code": "f9",
"modifiers": [
"fn"
]
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f10"
},
"to": [
{
"key_code": "f10",
"modifiers": [
"fn"
]
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f11"
},
"to": [
{
"key_code": "f11",
"modifiers": [
"fn"
]
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f12"
},
"to": [
{
"key_code": "f12",
"modifiers": [
"fn"
]
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f1",
"modifiers": {
"mandatory": [
"fn"
]
}
},
"to": [
{
"key_code": "f1"
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f2",
"modifiers": {
"mandatory": [
"fn"
]
}
},
"to": [
{
"key_code": "f2"
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f3",
"modifiers": {
"mandatory": [
"fn"
]
}
},
"to": [
{
"key_code": "f3"
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f4",
"modifiers": {
"mandatory": [
"fn"
]
}
},
"to": [
{
"key_code": "f4"
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f5",
"modifiers": {
"mandatory": [
"fn"
]
}
},
"to": [
{
"key_code": "f5"
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f6",
"modifiers": {
"mandatory": [
"fn"
]
}
},
"to": [
{
"key_code": "f6"
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f7",
"modifiers": {
"mandatory": [
"fn"
]
}
},
"to": [
{
"key_code": "f7"
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f8",
"modifiers": {
"mandatory": [
"fn"
]
}
},
"to": [
{
"key_code": "f8"
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f9",
"modifiers": {
"mandatory": [
"fn"
]
}
},
"to": [
{
"key_code": "f9"
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f10",
"modifiers": {
"mandatory": [
"fn"
]
}
},
"to": [
{
"key_code": "f10"
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f11",
"modifiers": {
"mandatory": [
"fn"
]
}
},
"to": [
{
"key_code": "f11"
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "f12",
"modifiers": {
"mandatory": [
"fn"
]
}
},
"to": [
{
"key_code": "f12"
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\.apple\.Terminal$",
"^com\.googlecode\.iterm2$",
"^co\.zeit\.hyperterm$",
"^co\.zeit\.hyper$",
"^io\.alacritty$",
"^net\.kovidgoyal\.kitty$"
]
}
]
}
]
}
]
}
Tags keyboard mac function-keys