Я проверил это на двух машинах под управлением 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 переключением между "обычным" и "сочетанием" поведения?