1

Я проверил это на двух машинах под управлением Mavericks (10.9.4), с внешней клавиатурой и без нее, и во всех случаях поведение такое, как описано ниже.

Под Системными настройками> Клавиатура> Сочетания клавиш в разделе "Управление полетом" я включил ярлык "Показать рабочий стол" и назначил его на F5. Точно так же я назначил "Показать панель инструментов" для F6.

Независимо от того, как задано «Использовать все клавиши F1, F2 и т.д. В качестве стандартных функциональных клавиш», клавиша fn игнорируется для этих сочетаний клавиш, и действие сочетания клавиш происходит всегда , что делает невозможным заставить F5 и F6 работать "нормально" ( такой как в Terminal.app). Стоит отметить, что сочетания клавиш "по умолчанию" (например, F3 для управления полетом, F4 для LaunchPad) работают с fn так, как нужно / ожидаемо: удержание модификатора fn при нажатии этих клавиш "переворачивает" поведение (в зависимости от того, как « Использовать все клавиши F1, F2 и т.д. (Опция установлена).

Я установил KeyRemap4MacBook (теперь он называется Karabiner) и включил ведение журнала событий отладки клавиатуры с помощью:

sudo sysctl -w keyremap4macbook.debug=1

F5 без клавиши fn

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 с клавишей Fn

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 без клавиши fn

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 с клавишей Fn

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, когда клавиша fn (код клавиши 0x3F) нажата, код клавиши равен 0x7A ("F1") вместо 0x91 ("BRIGHTNESS_DOWN"), но для F5 клавиша остается 0x60 ("F5").

Кажется, что то, что обрабатывает префпанель сочетаний клавиш, не может включить состояние модификатора fn .

Итак, вот мой вопрос: есть ли способ назначить сочетания клавиш для функциональных клавиш, чтобы они работали как системные сочетания по умолчанию и считали клавишу fn переключением между "обычным" и "сочетанием" поведения?

1 ответ1

0

Благодаря большому количеству примеров файлов конфигурации в Karabiner (ранее известный как 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>

Обратите внимание, что файл private.xml быстро доступен на вкладке "Разное и удаление" окна "Карабинер", а на вкладке "Изменить ключ" есть кнопка ReloadXML .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .