必须用key codes工具确认冲突键真实键码(如caps lock为0x39),再通过hidutil命令将对应hid键码映射至0x700000000彻底禁用,单次执行重启失效,永久生效需写入launchagents plist文件。

Mac外接键盘某个按键(如Caps Lock、Option或Command)与系统或其他软件发生冲突,导致按一次触发两次、功能错乱或快捷键失效——必须精准定位并禁用该物理按键的原始信号,而非仅修改映射或屏蔽软件层输入。
确认冲突按键的底层键码
打开“访达” → “应用程序” → “实用工具” → 双击“终端”。
粘贴执行以下命令启动原生事件查看器:hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x700000039}]}' → 回车后无输出即正常;此时不要按任何键。
接着执行:sudo hexdump -C /dev/tty.usbmodem* 2>/dev/null || echo "未检测到调试设备" ——此命令仅作占位,真实操作应使用 Apple 官方推荐的 Key Codes 工具(免费下载):在按键时直接显示十六进制键码(如 Caps Lock 是 0x39,左 Option 是 0x3A)。【若跳过这步,后续所有禁用操作都可能作用于错误键位】
用hidutil彻底屏蔽指定键码
方法一:单次屏蔽(重启后失效)
在终端中执行(以禁用 Caps Lock 为例):hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x700000000}]}'
方法二:永久屏蔽(写入登录脚本)
执行:mkdir -p ~/Library/LaunchAgents → cp /dev/stdin ~/Library/LaunchAgents/local.disable-caps.plist → 粘贴以下内容:
EOF
保存后执行:launchctl load ~/Library/LaunchAgents/local.disable-caps.plist。
【注意:dst值设为0x700000000表示“无输出”,不可写成0或空值,否则命令会静默失败】
验证并排除残留干扰
第一步:拔掉所有其他USB/蓝牙键盘,仅保留目标外接键盘连接。
第二步:打开“系统设置” → “键盘” → “修饰键…” → 在顶部设备下拉菜单中务必选择你的外接键盘名称(如“Ducky One 3”),确认其所有修饰键均设为“默认”——否则 hidutil 屏蔽会被上层映射覆盖。
第三步:运行 Key Codes 工具,反复按冲突键,观察是否仍上报键码;若仍有输出,说明设备未被正确识别为 HID 键盘,需换 USB 口或改用 Karabiner-Elements 的 device-specific 规则替代。
第四步:如需恢复该键功能,执行:hidutil property --set '{"UserKeyMapping":[]}' → 回车即可清空所有自定义映射。











