需用Karabiner-Elements彻底禁用外接键盘F1–F12系统响应:安装后在“Complex Modifications”中启用对应规则,或导入JSON自定义规则,仅对外接键盘生效;亦可通过终端命令临时屏蔽,或在OBS、Logic Pro、Chrome等应用内关闭其F键热键监听。

当你连接了外接键盘到 Mac,却发现 F1–F12 键仍默认触发系统控制(如调节音量、亮度),而你只想让它们在特定软件中响应标准功能(比如 VS Code 里按 F5 启动调试),又不想全局启用“标准功能键”导致日常使用失去快捷控制——这时你需要的是精准屏蔽外接键盘的 F 键系统层映射,而非简单切换行为模式。
用 Karabiner-Elements 彻底禁用外接键盘 F1–F12 的系统响应
该方法直接拦截外接键盘发出的 F1–F12 扫描码,在系统级丢弃其作为亮度/音量等控制键的原始意图,只保留应用层可绑定的原始按键信号。适用于非 Apple 外接键盘(如机械键盘)且需彻底剥离 macOS 默认功能键逻辑的场景。
方法一:安装并配置 Karabiner-Elements
1、访问官网 https://karabiner-elements.pqrs.org 下载最新版安装包,双击运行安装程序。
2、安装完成后打开 Karabiner-Elements,首次启动会弹出权限请求窗口,点击“Open Security & Privacy”,跳转至“隐私与安全性”→“辅助功能”,勾选 Karabiner-Elements 并输入密码确认。
3、回到 Karabiner-Elements 主界面,点击顶部标签栏的“Complex Modifications” → 点击右下角“Add rule”按钮。
4、在规则列表中搜索 “disable f1 to f12 for external keyboard”,找到并启用对应规则;若未列出,点击“Import more rules from the Internet”,粘贴以下 JSON 链接导入自定义规则:https://raw.githubusercontent.com/tekezo/Karabiner-Elements/master/json_examples/disable_f1_to_f12_for_external_keyboard.json。
5、启用规则后,Karabiner 会自动识别当前外接键盘设备 ID,并仅对该设备生效——内置键盘和其他 USB 设备不受影响。
【注意:此规则仅作用于被识别为“external”的键盘设备。若外接键盘未被正确识别,请先在“Devices”标签页中确认其显示为“Connected”,且厂商名/型号非“Apple Internal Keyboard”】
通过终端命令临时屏蔽外接键盘的 F 键系统事件
适用于调试验证或临时禁用,不依赖第三方工具,但每次重启后失效。该命令绕过 InputSource 层,直接向 IOKit 注入过滤器,使系统忽略外接键盘发送的 F1–F12 键事件(其他按键如字母、数字、方向键仍正常工作)。
第一步:确认外接键盘设备路径
打开“终端”,输入以下命令并回车:
ioreg -p IOUSB -l | grep -E '(Product|Vendor)' | grep -A1 -B1 "Keyboard"
第二步:提取设备 Vendor ID 和 Product ID
从上一步输出中找到类似 "idVendor" = 0x046d 和 "idProduct" = 0xc31c 的行,记下十六进制数值(不同品牌键盘值不同)。
第三步:加载内核级屏蔽模块
执行以下命令(将 0x046d 和 0xc31c 替换为你实际查到的值):
sudo defaults write /Library/Preferences/com.apple.driver.AppleUSBTCKeyEventDriver "DisableFKeysForDevice" -array-add '
第四步:重启 USB 键盘驱动
执行:sudo kextunload /System/Library/Extensions/AppleUSBTopCase.kext/Contents/Plugins/AppleUSBTCKeyEventDriver.kext → 等待 1 秒 → 再执行:sudo kextload /System/Library/Extensions/AppleUSBTopCase.kext/Contents/Plugins/AppleUSBTCKeyEventDriver.kext
此时外接键盘的 F1–F12 将不再触发任何系统控制动作,但可在 Chrome、VS Code 等应用中直接绑定为快捷键使用。
为特定应用关闭外接键盘 F 键系统映射
如果你只希望在某个软件(例如 OBS、Logic Pro、Final Cut Pro)中禁用 F1–F12 的系统行为,而其他时候保持原样,就不用动系统底层——直接在应用内部关闭其对系统快捷键的监听即可。
方法1:在 OBS Studio 中停用 F 键全局热键
打开 OBS → “设置” → “热键” → 取消勾选“启用热键”或手动清空所有以 F 开头的热键绑定(如 F12 对应“开始/停止录制”)。
方法2:在 Logic Pro 中禁用触控栏 F 键同步
Logic Pro → “偏好设置” → “控制表面” → 取消勾选“使用触控栏作为主控制器”,再进入“高级”选项卡 → 关闭“同步功能键到触控栏”。【此操作会同时阻止外接键盘 F 键触发 Logic Pro 的触控栏映射,避免误触发混音台跳转】
方法3:Chrome 浏览器中禁用媒体键拦截
地址栏输入:chrome://flags/#hardware-media-key-handling → 将该实验性选项设为 “Disabled” → 重启浏览器。此时外接键盘的 F7/F8/F9/F10(播放/暂停/上一首/下一首)将不再被 Chrome 拦截,而是交由系统或音乐 App 处理,间接实现“禁止 F 键作为浏览器媒体快捷键”的效果。

















