
Я протестировал это на двух машинах под управлением Mavericks (10.9.4), с внешней клавиатурой и без нее, и во всех случаях поведение было таким, как описано ниже.
ПодСистемные настройки > Клавиатура > Сочетания клавишВ разделе «Mission Control» я включил сочетание клавиш «Показать рабочий стол» и назначил его на F5. Аналогично я назначил «Показать панель инструментов» на F6.
Независимо от того, как настроен параметр «Использовать все клавиши F1, F2 и т. д. как стандартные функциональные клавиши»,фнклавиша игнорируется для этих сочетаний клавиш и действия сочетания клавишвсегдапроисходит, делая невозможным заставить F5 и F6 действовать "нормально" (например, в Terminal.app). Стоит отметить, что "стандартные" сочетания клавиш (например, F3 для Mission Control, F4 для LaunchPad)делатьработать сфнкак и ожидалось: удерживаяфнмодификатор при нажатии этих клавиш «меняет» поведение (в зависимости от того, как установлена опция «Использовать все клавиши F1, F2 и т. д.»).
Я установил «KeyRemap4MacBook» (теперь называетсяКарабин) и включил отладочную регистрацию событий клавиатуры с помощью:
sudo sysctl -w keyremap4macbook.debug=1
F5 безфнключ
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 сфнключ
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
И для сравнения...
F1 безфнключ
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
Ф1 сфнключ
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
Обратите внимание, что при нажатии F1, когдафнклавиша (код клавиши 0x3F) нажата, код клавиши 0x7A ("F1") вместо 0x91 ("BRIGHTNESS_DOWN"), но для F5 клавиша остается 0x60 ("F5").
Похоже, что то, что обрабатывает префпанель сочетаний клавиш, не имеет возможности включить состояниефнмодификатор.
Итак, вот мой вопрос: есть ли способ назначить сочетания клавиш функциональным клавишам так, чтобы они работали как системные сочетания клавиш по умолчанию и учитывалифнклавиша как переключатель между «нормальным» и «быстрым» режимом работы?
решение1
Спасибо многимпримеры файлов конфигурациив Карабин(ранее известный как KeyRemap4MacBook
), мне удалось придумать следующее и добавить его в свой private.xml
файл, чтобы получить желаемое поведение как на внешней клавиатуре, так и на встроенной клавиатуре 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>
Обратите внимание, что к файлу можно быстро получить доступ из вкладки «Разное и удаление» окна Karabiner, а на вкладке «Изменить ключ» private.xml
есть кнопка.ReloadXML