Как использовать функциональные клавиши как стандартные клавиши только в одном приложении?

2757
Michal Sznajder

На моем MacBook я использовал все клавиши F1 F2 и т. Д., Поскольку опция стандартных функциональных клавиш не включена. Я использую FunctionFlip, чтобы отобразить F3 из Expose to Spaces.

Однако я хотел бы использовать функциональные клавиши в качестве реальных функциональных клавиш при работе в виртуализированной среде, такой как VirtualBox или VMware Fusion. Переход в Система> Настройки не очень удобен.

Теперь вы знаете, как проверять использование всех клавиш F1 F2 и т. Д. В качестве стандартных функциональных клавиш, только когда определенное приложение активно?

4
На этот вопрос есть хорошие ответы на вопрос "Разное": https://apple.stackexchange.com/questions/49315/can-i-use-my-f1-f2-etc-keys-as-standard-function-keys-only- для специфических-приложений James 5 лет назад 0

7 ответов на вопрос

2
Lionel

Try combining FunctionFlip with BetterTouchTool:

  • Set the keys you want "flipped" with FunctionFlip
  • Set up application specific keys with BetterTouchTool
Это фантастическая комбинация приложений! Lantrix 9 лет назад 0
1
John T

Возьмите IronAHK и используйте его для переназначения ВСЕХ ключей вместо системных настроек (причина в том, что они могут конфликтовать с системными настройками), он поставляется с make-файлом, который легко компилируется в Mono.

Затем используйте его так же, как AutoHotkey:

#IfWinActive,,VirtualBox F1::Send { F1 } 
Я не могу найти какую-либо скомпилированную версию. Нужно ли компилировать самостоятельно? Michal Sznajder 14 лет назад 0
В настоящее время они не предоставляют, да, к сожалению, вам нужно будет скомпилировать свои собственные. Но они предоставляют make-файл, я верю. John T 14 лет назад 0
1
Michal Sznajder

I finally started to use Palua and it is just great.

Paula is no longer available so I use Fluor these days.

1
user495470

Одной из альтернатив 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> 

См. Источник для значений кода ключа и предопределенных настроек .

0
Ben S

К сожалению, это не вариант, который предоставляет Apple или FunctionFlip .

Однако автор FunctionFlip, очевидно, смог написать код, который позволяет динамически конфигурировать функциональные клавиши, чтобы это можно было сделать.

Я хотел бы связаться с автором FunctionFlip и спросить, может ли он добавить нужные вам функции. А именно, управление поведением функциональных клавиш в зависимости от активного приложения.

Если вы обещаете пожертвовать эту функцию, она может быть реализована быстрее.

В противном случае, я не знаю никаких других программ, которые предлагают эту функциональность.

0
pattulus

Вы можете использовать AppleScript для переключения состояния функциональных клавиш:

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" 

Кроме того, вы можете сделать это приложение специфичным с помощью Keyboard Maestro . Если написано небольшое руководство, как вытащить это отсюда .

0
fivestones

Используйте Карабинер

Это приложение может предоставить точную функциональность, запрошенную OP. Ответ user495470 о KeyRemap4MacBook был полезен, чтобы указать мне правильное направление. Однако он устарел и больше не работает так, как написано, потому что KeyRemap4MacBook был обновлен. Теперь он называется Карабинер . Он выглядит в хорошем состоянии и является бесплатным программным обеспечением с открытым исходным кодом (не в случае BetterTouchTool, упомянутого в другом ответе, требующем оплаты через 45 дней).

Настройка его

Сначала загрузите и установите приложение Karabiner. После установки, чтобы переназначить функциональные клавиши как стандартные функциональные клавиши, вам нужно будет добавить «Complex-Modification» в настройках. Существует несколько таких сложных модификаций, которые были предварительно созданы и загружены с веб-сайта Karabiner, но вы также можете написать свои собственные в json.

Используйте следующий код и поместите его в файл (с именем что-то вроде «functionkeys.json») в ~/.config/karabiner/assets/complex_modificationsпапке. Как только он появится, перейдите в настройки Карабинера и нажмите Complex-Modifications, затем Add rule. Вы должны увидеть текст Function Keys in Terminal Appsи там нажать Enable All.

Как изменить, какое приложение переднего плана вызывает эффект

Этот код специально обеспечивает стандартную функциональность функциональных клавиш при использовании любого из нескольких приложений терминала (и ничего при использовании любого другого приложения). Этот код также позволяет использовать медиа-ключи в терминальных приложениях с помощью fn + function key.

В то время как ОП спрашивал о конкретном приложении, в частности, упоминался VirtualBox. Приведенный ниже код может быть изменен для создания функциональных клавиш в любом приложении (ах), которое требуется, заменяя содержимое каждого экземпляра "Bundle Identifiers: [ ... ]"любым приложением (ями). (VirtualBox может быть, "^org\\.virtualbox\\.VirtualBoxVM"хотя я еще не пробовал.) Используйте прилагаемый Karabiner EventViewer, чтобы найти идентификатор приложения для любого приложения, а затем подключите значения.

{ "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$" ] } ] } ] } ] } 

Похожие вопросы