macOS 原生的“键盘-修饰键”只能做少量按键互换,一旦你想实现更细的规则(比如按住 Caps Lock 变成一组快捷键入口、不同外接键盘用不同布局、对某个 App 单独生效),就需要更强的键位层工具。Karabiner-Elements 是很多人长期使用的选择:免费、规则透明、可回退。
工具官网:https://karabiner-elements.pqrs.org/
也可以用 Homebrew 安装(更方便升级与卸载):brew install --cask karabiner-elements
首次启动会要求系统权限:到“系统设置 - 隐私与安全性”里打开输入监控(Input Monitoring)等相关权限。权限没开全,最常见的表现就是规则看起来生效了,但实际按键没变化。
如果你只想做最简单的“键对键”映射,建议先在 Karabiner-Elements 的 Simple Modifications 里做:比如把 caps_lock 映射为 left_control,或者把不常用的右侧修饰键换成更常用的功能。这个阶段的目标是:先让你每天都能用上、并且不影响打字。
很多“快捷键党”会把 Caps Lock 做成 Hyper 键:按住它,相当于同时按下 command + control + option + shift,这样你就可以在 Raycast、Alfred、BetterTouchTool、Hammerspoon 等工具里绑定一整套不会冲突的新快捷键。
在 Complex Modifications 里导入或自建规则,核心思路通常是把 caps_lock 变成一组修饰键。示例(仅演示结构,实际按需调整):
{" ":"CapsLock as Hyper","rules":[{"de ion":"CapsLock -> Hyper","manipulators":[{"type":"basic","from":{"key_code":"caps_lock","modifiers":{"optional":["any"]}},"to":[{"key_code":"left_shift","modifiers":["left_command","left_control","left_option"]}]}]}]}
提示:如果你希望“轻点 Caps Lock 还是 ESC,按住才是 Hyper”,可以把规则拆成“to_if_alone / to_if_held_down”两段来做,这样更接近 Vim/终端用户的肌肉记忆。
如果你同时用 MacBook 自带键盘和外接键盘(或多把外接键盘),建议开启“Devices”里的按设备区分(或在规则里用设备条件),避免出现“公司键盘能用、回家就全乱了”的情况。常见做法是:外接键盘保留更激进的布局(比如把右 Command 改成中英文切换),内置键盘保持接近默认。
1) 权限:Input Monitoring 是否对 Karabiner-Elements 全开?
2) 冲突:是否同时开了其他键盘映射工具(如部分鼠标键盘驱动、宏软件)?先关掉其中一个排除冲突。
3) 事件验证:打开 Karabiner-EventViewer 看按键是否被正确识别;如果按键名都不对,规则自然匹配不上。
4) 回退:复杂规则建议一次只改一条,确认生效再叠加,避免“多条一起上”导致定位困难。