Mavericks 中 F 键键盘快捷键被忽略

Mavericks 中 F 键键盘快捷键被忽略

我已经在两台运行 Mavericks (10.9.4) 的机器上进行了测试,分别带有和不带有外接键盘,在所有情况下,行为都如下所述。

在下面系统偏好设置 > 键盘 > 快捷键在“任务控制”部分,我启用了“显示桌面”快捷方式并将其分配给 F5。同样,我将“显示仪表板”分配给 F6。

无论如何设置“将所有 F1、F2 等键用作标准功能键”,fn这些快捷键和快捷键操作将被忽略总是发生这种情况,导致无法让 F5 和 F6 正常运作(例如在 Terminal.app 中)。值得注意的是,“默认”快捷键(例如 F3 用于 Mission Control,F4 用于 LaunchPad)与...合作fn符合期望/预期:持有fn按下这些键时使用修饰键会“翻转”行为(取决于“使用所有 F1、F2 等键”选项的设置方式)。

我安装了“KeyRemap4MacBook”(现在称为登山扣)并启用键盘事件调试日志记录:

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”)。

似乎无论处理键盘快捷键 prefpane 什么,都没有办法包含fn修饰符。

所以我的问题是:有没有办法将键盘快捷键分配给功能键,以便它们像默认的系统快捷键一样工作,并尊重fn键作为“正常”和“快捷”行为之间的切换?

答案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

相关内容