跳转到主要内容

这是本节的多页打印视图。 .

返回本页常规视图.

Karabiner 版

免费开源的 Capslock 布局,作为 Karabiner-Elements 配置发布:一键安装、逐键学习、按需定制, 以及它的早期版本。

在成为原生应用之前,Capslock 是一份 Karabiner-Elements 配置,现在也依然是。Capslock Enhancement V3 是一组 Karabiner 规则:轻按 Caps Lock 是 Escape,按住是 Hyper 键,拥有与原生应用内置的 Capslock Classic 相同的十六个控制平面和同一套布局。它免费开源,采用 Apache 2.0 许可,源码位于github.com/Vonng/Capslock。

该用哪一个?

Karabiner 版Capslock 应用
需要安装Karabiner-Elements,再导入一个规则文件Capslock 应用
权限Karabiner 的驱动、后台服务、辅助功能与输入监控只需辅助功能
修改按键编辑 JSON,或使用配置器在编辑器中点按该键
学习布局本节文档与配置器Hold-to-Reveal 与 Playground
价格与源码免费,Apache 2.0,开源商业软件,见下载
状态持续维护0.4.0 候选发布版

同一时间只让其中一个接管 Caps Lock。只要还有 Karabiner 规则在使用 Caps Lock,Capslock 应用就会拒绝启动;请先按与 Karabiner-Elements 共存中的说明,在 Karabiner-Elements 中关闭这些规则。

三步开始

  1. 安装 Karabiner-Elements,并授予它请求的权限。
  2. 用安装页上的按钮导入规则。
  3. 在 Karabiner-Elements › Complex Modifications 中启用全部 Capslock 规则。

轻按 Caps Lock:Escape。按住它再按 H J K L:光标随之移动。

版本

版本年份运行于状态
Mac V32021 – 至今Karabiner-Elements持续维护
Mac V22017 – 2021Karabiner-Elements已归档
Mac V12015 – 2017Karabiner 与 Seil已归档
Windows2013 – 2015AutoHotkey已归档

1 - 安装与 Hyper 基础

安装 Karabiner-Elements,一键导入 Capslock 规则并确认生效,再理解单击、按住、Hyper 与十六个控制平面。

Capslock Enhancement V3 当前版本 面向 macOS 与 Karabiner-Elements。除此之外没有别的东西需要安装:这套配置就是一组由 Karabiner 解释执行的复杂修饰规则,不会新增常驻进程,也不需要在你的机器上编译任何东西。

说明

本文在 2026 年 8 月使用 Karabiner-Elements 16.1.0 验证,该版本的支持范围覆盖 Intel 与 Apple 芯片上的 macOS 13 Ventura 至 macOS 27。当前版本请以官网为准。

安装

安装 Karabiner-Elements

从官方网站下载 DMG 并运行 Karabiner-Elements.pkg,或者直接使用 Homebrew:

brew install --cask karabiner-elements

打开 Karabiner-Elements Settings,按照系统设置提示,允许特权与非特权后台服务、辅助功能、输入监控与驱动扩展。在 Virtual Keyboard 中选择与物理键盘一致的布局。各项权限的作用见官方安装指南。

导入规则

打开下面这个导入链接,任意浏览器都会把它直接交给 Karabiner-Elements:

导入 Capslock Enhancement V3.1

也可以自己粘贴这个 URL:

karabiner://karabiner/assets/complex_modifications/import?url=https://raw.githubusercontent.com/Vonng/Capslock/main/mac_v3/capslock.json

点击 Import,并允许浏览器打开 Karabiner-Elements。

启用规则并检查

在 Settings › Complex Modifications 中启用需要的规则。十条规则彼此独立, 用不到的类目可以不启用;第一条 CapsLock to Hyper 是其余所有规则的前提。

随后单击 ⇪,它应当发送 ⎋;按住它再依次按H J K L,光标随之移动。此时你已经在零号平面上了。

提示

另有两条等价路径。Karabiner 陈列馆页面 本身就有 Import 按钮;完全离线安装则可以把 capslock.json 放进 ~/.config/karabiner/assets/complex_modifications/,再选择 Add predefined rule。如果哪个键行为不对,Karabiner-EventViewer 会显示它实际发出了什么。

十条规则

Capslock 零号控制平面
零号控制平面:单独按住 ⇪ 时的布局。它背后还有十五个由左侧修饰键选择的平面。
Capslock 零号控制平面
零号控制平面:单独按住 ⇪ 时的布局。它背后还有十五个由左侧修饰键选择的平面。

键位图按用途着色,因此一个键的邻居就大致告诉你它做什么。整份配置由十条 Karabiner 规则组成,一类一条,可以逐条启用。

capslock.json 中的十条规则,以及各自承载的映射数量
类目颜色作用映射数
基础功能蓝色单击 ⇪ 发送 ⎋,按住则是 ✱ Hyper,另含输入法切换4
导航粉色Vim 式移动、选择、标签页与窗口切换、指针与滚轮102
删除棕色NM,. 按字符、词、行删除,手不必离开核心区12
鼠标键小键盘把数字小键盘变成一只完整的鼠标63
窗口管理淡蓝关闭与轮换标签页、窗口、应用与桌面;睡眠、锁屏、注销19
应用捷径黄色在三个平面上启动或切换六个应用18
终端控制绿色终端信号、IDE 运行控制、Vim 与 Tmux 前缀、Codex 与 Claude10
剪贴板紫色6–0 上的五个额外文本剪贴板10
字符变换橙色把括号与代码标点挪到核心区附近16
功能键青色截图、媒体、亮度、键盘背光与音量28
配置器读取的是同一份 V3 JSON,是检查任意控制平面按键、定制应用启动快捷键最快的方式,并且可以导出一份可直接导入的配置。

单击、按住与 Hyper

Caps Lock 现在有两种永不冲突的行为,因为一种在松开时判定,另一种在按住期间生效。

大写锁定原本的能力,全都还在一个组合键之内
操作输出用途
单击 ⇪⎋ Escape双手不离开核心区即可发送 Escape
按住 ⇪✱ Hyper进入零号控制平面
✱ 加 ⎋⇪ Caps Lock切换原始大写锁定状态
✱ 加 ␣⌃ 加 ␣切换输入法
✱ 加 ⌘ 加 ␣⌃ 加 ⌘ 加 ␣打开表情与符号面板

✱ 并不是某种私有信号。Karabiner 把按住的 Caps Lock 改写成同时按下右侧全部四个修饰键 ⌘ 加 ⌥ 加 ⌃ 加 ⇧。这带来两个值得理解的结果:

  • 其他软件收到的仍然是普通组合键。 Alfred、Moom、Magnet、Raycast 以及各类 IDE 收到的是 ⌃ 加 ⌥ 加 ⇧ 加 ⌘ 加一个字母,可以像绑定其他快捷键一样绑定它。
  • 规则没有占用的键会原样透传。 ✱ 加 A 之所以没有自己的规则,正是为了把它让给窗口管理器。任何你想交给其他应用的键都可以照此办理。

十六个控制平面

Hyper 保持按下时,四个左侧修饰键充当四个二进制开关。把它们当成四个比特位读,就得到 0–15 号平面:

⌘ = 1 · ⌥ = 2 · ⌃ = 4 · ⇧ = 8。

V3.1 的全部十六个平面、各自的映射数量,以及它遵循的主题
平面左侧修饰键映射数承载内容
0✱89日常层:移动、删除、应用、终端、符号
1✱ 加 ⌘59选择、次选应用、剪贴板复制
2✱ 加 ⌥38指针移动与第三组应用
3✱ 加 ⌘ 加 ⌥8按词、按段选择
4✱ 加 ⌃12桌面与窗口管理
5✱ 加 ⌘ 加 ⌃—空闲
6✱ 加 ⌥ 加 ⌃—空闲
7✱ 加 ⌘ 加 ⌥ 加 ⌃—空闲
8✱ 加 ⇧25应用、窗口与标签页切换
9✱ 加 ⌘ 加 ⇧21加速滚轮
10✱ 加 ⌥ 加 ⇧21加速指针
11✱ 加 ⌘ 加 ⌥ 加 ⇧—空闲
12✱ 加 ⌃ 加 ⇧9滚轮
13✱ 加 ⌘ 加 ⌃ 加 ⇧—空闲
14✱ 加 ⌥ 加 ⌃ 加 ⇧—空闲
15✱ 加 ⌘ 加 ⌥ 加 ⌃ 加 ⇧—空闲

九个平面已被使用,另外七个是留给你自己规则的空间。打开配置器可以交互式浏览同样的十六行,并查看所选平面上每个键的实际行为。

平面的划分并不随意。在整份配置里,同一个修饰键始终保持同一种含义,这也是这套布局可以「学一次」而不是「逐键背诵」的原因:

修饰键一以贯之的含义
⌘加强当前动作:从移动变成选择,从粘贴变成复制,切到第二个应用
⌥离开文本世界:指针、滚轮、第三个应用
⌃与窗口服务器对话:桌面、调度中心、屏幕状态
⇧切换容器:应用、窗口、标签页;或者给指针动作加速

兼容性

  • 这套布局以 ANSI 键盘为蓝本,内置键盘与外接键盘表现一致。ISO 布局同样可用, 只是物理位置不同的那两个键可能落在意料之外的地方。
  • 鼠标键需要一块数字小键盘,其余功能在 87 键键盘上都能用。
  • 更旧的 macOS 需要归档版本的 Karabiner-Elements,不在本指南覆盖范围内。
警告

macOS 自己也保留了少量全局组合键,最常见的冲突是 ⌘ 加 ⌥ 加 ⌃ 加 ⇧ 加 .,它可能唤起系统诊断对话框,参见 Issue #30。如果与你使用的平面冲突,请重新映射该系统快捷键。

下一步

继续阅读导航、删除与鼠标控制。

2 - 导航、删除与鼠标

不离开键盘完成文本移动与选择、按字符、词或行删除,并用核心区、方向键或小键盘控制指针与滚轮。

键盘核心区的粉色与棕色区域承载这套布局最高频的操作。导航与删除两个类目合计占据 V3.1 中 282 条映射里的 114 条,这也是整套布局里最值得先学的部分。

重要

若无特别说明,本页所有组合都假定 ✱ Hyper 已经按下。表中的「+ ⌘」即表示 ✱ 加 ⌘ 再加上对应按键。

导航键组

H J K L 分别向左、下、上、右移动,与 Vim 完全一致;正上方的 U I O P 把同样的思路扩展到整页与整行:Page Up、Home、End、Page Down。

这八个键是全键盘上唯一在九个平面上都有映射的按键。下面每一组平面负责一件事, 合起来占据 V3.1 中 282 条映射里的 72 条。

移动与选择文本

文本层的规律只有一条:按住 ⌘,移动就变成选择,因为规则发出的是同一个方向键再加上 ⇧。再叠加 ⌥,选择单位随之扩大:一个字符变成一个词,一行变成三行,半行变成整行。

0、1、3 号平面:移动、选择、扩大选择
按键Hyper+ ⌘+ ⌘ 加 ⌥
H左移向左选择向左选词
J下移向下选行向下选择三行
K上移向上选行向上选择三行
L右移向右选择向右选词
U上一页选择上一页选择上一页
I行首选择至行首从行尾选至行首
O行尾选择至行尾从行首选至行尾
P下一页选择下一页选择下一页

这也是 ✱ 加 ⌘ 加 ⌥ 加 I 先跳到行尾、再反向选回行首的原因:不碰鼠标就精确选中一整行,这是最快的做法。

切换应用、窗口、标签页与桌面

⇧ 在容器之间移动,也就是你正在看的那个东西,而不是里面的文字;⌃ 则是在和窗口服务器对话。

⇧ 与 ⌃ 平面实际发出的按键
组合实际发出效果
✱ 加 ⇧ 加 J / ✱ 加 ⇧ 加 K⌘ 加 ⇥ / ⌘ 加 ⇧ 加 ⇥下一个 / 上一个应用
✱ 加 ⇧ 加 H / ✱ 加 ⇧ 加 L⌃ 加 ⇧ 加 ⇥ / ⌃ 加 ⇥上一个 / 下一个标签页
✱ 加 ⇧ 加 I / ✱ 加 ⇧ 加 O⌘ 加 ⇧ 加 ` / ⌘ 加 `同一应用的上一个 / 下一个窗口
✱ 加 ⇧ 加 U / ✱ 加 ⇧ 加 P⌘ 加 ⌥ 加 - / ⌘ 加 ⌥ 加 =缩小 / 放大
✱ 加 ⌃ 加 H / ✱ 加 ⌃ 加 L⌃ 加 ← / ⌃ 加 →上一个 / 下一个桌面
✱ 加 ⌃ 加 K / ✱ 加 ⌃ 加 O⌃ 加 ↑调度中心
✱ 加 ⌃ 加 J⌃ 加 ↓当前应用的全部窗口
✱ 加 ⌃ 加 I⌘ 加 H隐藏当前应用
✱ 加 ⌃ 加 U⌃ 加 ⌘ 加 F切换全屏
✱ 加 ⌃ 加 P⌘ 加 ␣Spotlight
说明

标签页切换依赖 ⌃ 加 ⇥,绝大多数浏览器和编辑器支持它,少数应用不支持。窗口轮换用的是 macOS 自带的 ⌘ 加 `「将焦点移到下一个窗口」,请先在系统设置 › 键盘 › 键盘快捷键中确认它已启用。

从核心区控制指针与滚轮

另外四个平面把同样这八个键变成鼠标,双手完全不必移动。两种模式下, ⇧ 都是那个「油门」。

2、10、12、9 号平面:两个加速平面的速度正好是旁边平面的两倍
按键+ ⌥
指针
+ ⌥ 加 ⇧
指针加速
+ ⌃ 加 ⇧
滚轮
+ ⌘ 加 ⇧
滚轮加速
H指针左移指针左移滚轮左滚轮左
J指针下移指针下移滚轮下滚轮下
K指针上移指针上移滚轮上滚轮上
L指针右移指针右移滚轮右滚轮右
U左键左键滚轮右滚轮右
I右键右键滚轮上滚轮上
O后退键后退键滚轮下滚轮下
P前进键前进键滚轮左滚轮左
速度是 Karabiner 的 mouse_key 单位,不是像素
平面指针速度滚轮速度
⌥ / ⌃ 加 ⇧160064
⌥ 加 ⇧ / ⌘ 加 ⇧3200128

只有鼠标中键是例外:它不在导航键上,而在 ✱ 加 ⌥ 加 ↩。

方向键鼠标控制

物理方向键同样可以驱动指针,很多时候比切到核心区更顺手。这里 ⌥ 减速、⌘ 加速,指针与滚轮两种模式都适用。

方向键簇上的三档指针速度与三档滚轮速度
组合结果速度
✱ + 方向键移动指针1600
✱ 加 ⌥ + 方向键缓慢移动800
✱ 加 ⌘ + 方向键快速移动4200
✱ 加 ⇧ + 方向键滚动滚轮64
✱ 加 ⇧ 加 ⌥ + 方向键缓慢滚动32
✱ 加 ⇧ 加 ⌘ + 方向键快速滚动256
说明

V3.1 中快速滚轮的纵向方向是反的:✱ 加 ⇧ 加 ⌘ 加 ↑ 与 ✱ 加 ⇧ 加 ↓ 滚动方向相同,✱ 加 ⇧ 加 ⌘ 加 ↓ 与 ✱ 加 ⇧ 加 ↑ 相同。左右方向键不受影响。

五个鼠标按键全都落在 ↩ 上:

组合按键
✱ 加 ↩左键单击
✱ 加 ⌘ 加 ↩右键单击
✱ 加 ⌥ 加 ↩中键单击
✱ 加 ⇧ 加 ↩后退
✱ 加 ⌃ 加 ↩前进

语义删除

N M , . 位于导航键正下方。左边一对删除光标之前的内容,右边一对删除光标之后的内容,叠加修饰键则放大删除单位。

N 与 M 删除光标之前的内容,逗号与句点删除光标之后的内容
按键Hyper+ ⌘+ ⌥
N删除前一个词删除至行首删除至行首
M删除前一个字符删除前一个词下移当前行
,删除后一个字符删除后一个词上移当前行
.删除后一个词删除至行尾删除至行首

有两处刻意打破了规律。✱ 加 ⌥ 加 N 与 ✱ 加 ⌥ 加 . 都发送 ⌘ 加 ⌫,把光标到行首的内容一次清空,所以这一组的两个外侧键就是「这行不要了」。而 ✱ 加 ⌥ 加 M 与 ✱ 加 ⌥ 加 , 根本不删除:它们发出的是 ⌥ 加 ⇧ 加 ↓ 与 ⌥ 加 ⇧ 加 ↑, 也就是 IntelliJ、VS Code 等编辑器通用的上下移动整行。

数字键盘鼠标

如果键盘带小键盘,Hyper 会把整块小键盘变成一只鼠标:数字键给出以 5 为中心的八个方向,顶行滚动,底边与右侧是五个按键。

Hyper 加小键盘:指针、滚轮与全部五个鼠标按键
小键盘按键映射
7 8 9 4 6 1 2 3八个指针方向,含四个斜向
5停止:发送速度为零的指针事件
/ =滚轮上 / 下
Num Lock *滚轮横向滚动
0左键单击
.中键单击
⌤右键单击
+ / -前进 / 后退

速度修饰键与别处一致:⌥ 把指针降到一半,⌘ 提升一倍,再加 ⇧ 则把指针移动换成同档速度的滚轮移动。

下一步

继续阅读窗口、应用、终端、剪贴板与字符输入。

3 - 窗口与开发者工作流

关闭与轮换窗口、启动应用、发送终端与 IDE 组合键、使用五个额外剪贴板,并在核心区直接输入代码标点。

这套布局为最容易打断开发者心流的操作安排了多个颜色区域:切换窗口、启动工具、发送终端信号、临时存放文本,以及输入标点符号。

重要

本页所有组合都假定 ✱ Hyper 已经按下。

窗口管理

⇥ Q W A S 构成键盘左侧的淡蓝色区块,负责关闭与轮换:小到一个标签页, 大到整个登录会话。

从一个标签页到整个登录会话的关闭与轮换
按键Hyper+ ⌘+ ⌥+ ⌃+ ⇧
⇥下个应用上个应用下个桌面—下个标签页
Q退出应用退出应用—锁屏注销
W关闭窗口关闭窗口熄屏—睡眠
A窗口管理器调度中心显示桌面Spotlight—
S下个标签页上个标签页下个窗口上个窗口—

其中两行值得单独说明。

✱ 加 A 是故意不映射的。因为 Hyper 就是右侧的 ⌃ 加 ⌥ 加 ⇧ 加 ⌘,没有被占用的键会原样透传给正在监听的应用。在 Moom、Magnet 或任何窗口管理器里绑定 ⌃ 加 ⌥ 加 ⇧ 加 ⌘ 加 A,它就成了你的布局键。Slate 仅作为历史示例保留。

睡眠并不是按键,而是 Shell 命令:✱ 加 ⇧ 加 W 执行 pmset sleepnow,✱ 加 ⌥ 加 W 执行 pmset displaysleepnow。 Karabiner 不需要额外权限,但如果有模态对话框正在阻塞输入,它们不会触发。

应用捷径

黄色按键在三个平面上启动或切换六个应用。每条规则都是一句普通的 open -a Shell 命令,也就是说目标是按应用名称匹配的,这正是它们可以安全改写的原因。

这些只是默认值:这十八个名字本来就是给你改的
按键Hyper+ ⌘+ ⌥
ESafariFinderMail
RiTerm2PreviewTerminal
TVisual Studio CodeTyporaNotes
YSiriKarabiner-ElementsAmphetamine
FAlfred 5DashDictionary
GIntelliJ IDEAGoogle ChromeCalendar
配置器可以在浏览器里改写其中任何一个名字,

并导出一份可以直接导入的 JSON,既不用克隆仓库,也不用安装任何工具。

由于 open -a 既能启动也能切换,一个键就顶掉了点 Dock 图标和在 ⌘ 加 ⇥ 里翻找。如果应用已经在最前,再按一次不会有任何反应: 它不是开关。

终端与 IDE 控制

绿色按键把 Shell 高频使用的控制组合挪到右手,左手不必再在打字中途扭成 ⌃ 加字母的姿势。

终端信号、IDE 运行控制,以及两个前缀键
按键Hyper+ ⌘
D⌃ 加 D · 发送 EOF⌃ 加 ⌘ 加 D · 查询指针下的词
Z⌃ 加 Z · SIGTSTP,挂起任务F5 · 开始调试
X⌃ 加 R · 在 IDE 中运行⌃ 加 F5 · 不调试直接运行
C启动 Codex启动 Claude
V⌃ 加 V · Vim 块选择 / 字面量前缀—
B⌃ 加 B · Tmux 前缀—

✱ 加 C 与 ✱ 加 ⌘ 加 C 和黄色按键一样是 open -a 命令,可以改指向你自己在用的助手。

说明

✱ 加 Z 与 ✱ 加 X 刻意没有遮蔽 ⌘ 加 Z 撤销和 ⌘ 加 X 剪切:后者不需要 Hyper, 两种写法在同一个物理键上共存。

五个文本剪贴板

数字键 6–0 变成五个互相独立的文本剪贴板。 ✱ 加 ⌘ 加数字把当前选中内容复制进该槽位,✱ 加数字再把它粘贴回来。

每个槽位就是家目录下的一个文件
组合实际发生的事
✱ 加 ⌘ 加 6 … ✱ 加 ⌘ 加 0先复制选区,再 pbpaste > ~/.clip6 … ~/.clip0
✱ 加 6 … ✱ 加 0cat ~/.clip6 | pbcopy,然后粘贴

这种实现方式带来两个结果,而且都很有用:

  • **槽位能挺过注销、重启,也不受系统剪贴板影响。**它们就是普通文件,cat ~/.clip7 就能在终端里读出来,任何编辑器都可以往里写,完全不必碰键盘。
  • **它们只保存纯文本。**复制图片或文件进槽位,存下来的是 pbpaste 渲染出的文本,而不是原始对象。
说明

V3.1 有意只在 6–0 上保留五个槽位。旧配置还使用 1–5,升级前请确认自己的使用习惯。

面向代码的上档变换

橙色按键把程序员整天都在敲的标点挪到核心区附近,输入括号不必再做 ⇧ 体操。

两个键上摆下三对括号,:= 与 != 也落在同一只手里
按键Hyper+ ⌘+ ⌥
-_页面缩小—
=+页面放大—
[({<
])}>
;:!—
'==—
/切换注释——
\切换注释——

括号键是最大的收益:[ 与 ] 在同样的两个位置上给出圆括号、花括号、尖括号三对。又因为 ; 与 ' 紧挨着,: = 和 ! = 都是相邻连击,这就是 Go 和 Rust 里的赋值与比较反而比在原生键盘上更快的原因。

✱ 加 / 与 ✱ 加 \ 都发送 ⌘ 加 /,也就是几乎所有编辑器与 IDE 通用的注释快捷键。

下一步

在系统功能与参考中查阅功能键、截图、符号、定制与问题排查。

4 - 系统功能与参考

功能键、截图、本手册使用的符号、规则的写法、V3.1 的变化、定制方法与问题排查。

本页集中收录更适合查阅、而不是顺序学习的映射与项目资料。

功能键与系统控制

F1–F12 默认作为标准功能键;按住 Hyper 时发送对应的媒体或系统功能。青色区块覆盖整个顶行以及截图键。

Karabiner-Elements 15.1 及以上版本遵循 系统设置 › 键盘 › 键盘快捷键… › 功能键 的设置
按键Hyper 动作+ ⌘
`区域截图到剪贴板区域截图到文件
F1 / F2亮度降低 / 提高桌面 1 / 2
F3调度中心桌面 3
F4Spotlight—
F5 / F6键盘灯降低 / 提高—
F7 / F8 / F9上一首 / 播放暂停 / 下一首—
F10 / F11 / F12静音 / 音量降低 / 提高—
F13全屏截图到剪贴板全屏截图到文件
F14截图菜单旧款 Touch Bar 截图
F15播放 / 暂停—

截图键遵循同一条约定:单独的 Hyper 组合把截图放进剪贴板,再加 ⌘ 则写成桌面上的文件。

组合实际发出结果
✱ 加 `⌃ 加 ⇧ 加 ⌘ 加 4框选区域 → 剪贴板
✱ 加 ⌘ 加 `⇧ 加 ⌘ 加 4框选区域 → 文件
✱ 加 F13⌃ 加 ⇧ 加 ⌘ 加 3整屏 → 剪贴板
✱ 加 ⌘ 加 F13⇧ 加 ⌘ 加 3整屏 → 文件
✱ 加 F14⇧ 加 ⌘ 加 5截图与录屏菜单
说明

使用 ⌘ 加 F1–⌘ 加 F3 前,请先在系统设置 › 键盘 › 键盘快捷键… › 调度中心中启用桌面 1/2/3 快捷键,macOS 默认是关闭的。 Touch Bar 行为只适用于旧款 Touch Bar Mac,参见官方故障排除说明。

全尺寸键盘上的六键导航区提供同样三项系统控制的细粒度版本:它发出的是 ⇧ 加 ⌥ 加媒体键,也就是 macOS 自带的四分之一步长修饰键。

步进为 F1–F12 上整档调节的四分之一
导航区按键动作
Insert / ⌦平滑提高 / 降低屏幕亮度
↖ / ↘平滑提高 / 降低键盘灯亮度
Page Up / Page Down平滑提高 / 降低音量

符号

本手册与键位图中使用的全部记法
符号名称符号名称
⇪Caps Lock✱Hyper
⎋Escape␣空格
⌘Command⌥Option
⌃Control⇧Shift
↩Return⌤数字键盘 Enter
⇥ ⇤Tab / 反向 Tab⇭Num Lock
← ↓ ↑ →方向键↖ ↘Home / End
⇞ ⇟Page Up / Page Down⌫ ⌦删除 / 向前删除
⏫ ⏬加速 / 减速🖲️鼠标滚轮
🖱️L / 🖱️R / 🖱️M鼠标键 1 / 2 / 3🖱️B / 🖱️F鼠标键 4 / 5,后退与前进

✱ 是 Heavy Asterisk。普通星号的 ASCII 码正好是 42,也就是生命、宇宙以及任何事情的终极答案。

一条规则长什么样

配置里的每一条映射都是同一个形状。读懂一条,整个文件就都可读了,下面的定制一节也就不再吓人:

- description: 'control + h = ctrl + left (prev desktop)'
  type: basic
  from:
    key_code: h
    modifiers:
      mandatory: [left_control, right_command, right_control, right_shift, right_option]
  to:
    - key_code: left_arrow
      modifiers: [left_control]

mandatory 里那四个 right_* 修饰键就是 Hyper 本身,由 Hyper 驱动的每一条规则里都有它们。旁边还有什么(这里是 left_control)就决定了控制平面。to 则是应用最终收到的东西。

V3.1 的变化

V2 只用到了少数几个平面。V3 引入四位二进制的平面模型,布局才得以扩展到 282 条映射而不至于变得随意。更早的配置列在版本中。

随后 V3.1 有意调整了一些老用户会察觉的默认值:

  • 剪贴板移到 6–0,1–5 不再是槽位;
  • C 与 ⌘ 加 C 启动 Codex 和 Claude;
  • Spotlight 与 Alfred 5 取代 Launchpad 和 Alfred 4;
  • F13 与 F14 改为截图,不再是上一首 / 下一首;
  • ⌘ 加 D 执行的是定义,而不是打开词典。

定制配置

配置器无需工具

浏览全部十六个平面,查看任意按键真实的 Karabiner 输出,修改黄色按键背后的应用名称,并导出一份可以直接导入的 JSON 文件。

Fork 仓库,编辑可读性更好的 mac_v3/capslock.yml,然后重新生成 JSON。 Karabiner 规则模式支持的任何写法在这里都可以使用。

YAML 是唯一的事实来源,JSON 由它生成。重新生成只需要一条命令,以及 yq v4:

make -C mac_v3 compile

一个不错的入门定制是占用七个空闲平面之一:复制任意一条规则,改掉 mandatory 里的左侧修饰键,你就拥有了一整个键盘、且不与任何现有映射冲突的空间: 5 号平面(✱ 加 ⌘ 加 ⌃)与 7 号平面(✱ 加 ⌘ 加 ⌥ 加 ⌃) 都是完全空的。

请始终保持 YAML 与生成的 JSON 同步:导入链接与 Karabiner 陈列馆发布的都是那份 JSON。

常见问题与排查

某个组合完全没反应。

先检查 Settings › Complex Modifications:十条规则是分别启用的,刚导入时一条都没开。如果规则已启用,就打开 Karabiner-EventViewer 再按一次,它会显示真正到达系统的按键,从而区分「规则没生效」和「应用吞掉了这个快捷键」。

Caps Lock 能发 Escape,但别的都不管用。

这是只启用了第一条规则的典型症状。CapsLock to Hyper 只提供单击 Escape 与按住 Hyper,Hyper 之后能做什么,靠的是另外九条规则。

为什么某些组合会触发 macOS 系统诊断?

Issue #30 记录了 ⌘ 加 ⌥ 加 ⌃ 加 ⇧ 加 . 可能触发 macOS 系统诊断。若与自定义平面冲突, 请重新映射该系统快捷键。

为什么没有 Linux 支持?

Linux 桌面环境差异较大,作者本人主要通过 macOS 终端使用 Linux。原生支持可以使用 xmodmap 等工具实现,欢迎贡献。

仓库中为什么保留旧 macOS 版本?

旧版 Karabiner 使用 XML;macOS Sierra 以后由 Karabiner-Elements 接替,因此旧配置继续保留给历史系统。它们列在版本中。

这套设计是原创的吗?

最早的 AutoHotkey 版本可追溯到 2013 年,第一个 Mac 版本发布于 2015 年。当前配置长期收录于 Karabiner-Elements 复杂规则陈列馆。

项目

Capslock Enhancement 由 Vonng 维护,采用 Apache License 2.0。源码、版本与问题跟踪位于 GitHub。

5 - 配置器

浏览 Karabiner 规则的全部十六个控制平面,查看任意按键,改写应用捷径,并导出可导入的 JSON 文件。

从表格中选择控制平面,或直接点击键盘上的左侧修饰键,再点击任意按键查看它背后的 Karabiner 规则。启动应用的按键可以改名。所有修改只保存在当前页面,直到你复制或下载 JSON;不会发送到任何地方。

交互式配置器只在网页上运行:它展示全部十六个控制平面,可以改写应用捷径,并导出可导入 Karabiner-Elements 的 JSON。当前配置(3.1.0): capslock.json

导入你的版本

  1. 点击下载配置,得到的文件名为 capslock-3.1.0-custom.json。
  2. 把它放进 ~/.config/karabiner/assets/complex_modifications/。
  3. 在 Karabiner-Elements › Settings › Complex Modifications 中移除原有的 Capslock 规则,选择 Add predefined rule,再启用你这份文件中的规则。

安装页上的导入链接始终获取未经修改的配置,想恢复默认值时用它即可。

6 - 早期版本

Capslock 布局的 Mac V2、Mac V1 与 Windows 版,留作历史记录,已不再维护。

在 V3 之前,Capslock 布局先后有过三个版本:一份 Windows 上的 AutoHotkey 脚本、一份为 OS X 上的旧版 Karabiner 编写的 XML 配置,以及第一套 Karabiner-Elements 规则。它们的文件仍保存在 GitHub 仓库中。这几页记录了每个版本的功能和当年的安装方法。

仅作历史留存这些版本已不再维护。它们面向的是多年前的操作系统,也没有人在当前的 macOS 或 Windows

上验证过。如果现在想用这套布局,请安装 Mac V3。

版本年份运行环境配置形式
Mac V22017 – 2021macOS 10.11 – 10.13 上的 Karabiner-ElementsJSON 格式的复杂修改规则
Mac V12015 – 2017OS X 10.10 – 10.11 上的 Karabiner 与 SeilKarabiner 的 private.xml
Windows2013 – 2015Windows XP – 10 上的 AutoHotkeyAutoHotkey 脚本与预编译的 .exe

两个 Mac 版本都用 ✱ 表示 Hyper,这几页沿用这一写法:✱ H 即按住 Caps Lock 再按 H。

6.1 - Mac V2

Capslock Enhancement Mac V2:2017–2021 年的 Karabiner-Elements 规则,轻按 Caps Lock 为 Escape,按住为 Hyper。
已归档,不再维护

Mac V2 面向 Karabiner-Elements,其 README 列出的系统是 macOS 10.11 El Capitan、 10.12 Sierra 和 10.13 High Sierra。它在 2021 年被 Mac V3 取代,之后没有在当前的 macOS 或 Karabiner-Elements 上验证过。

Mac V2 是 Capslock 的第一个 Karabiner-Elements 版本。Karabiner-Elements 是为适配 macOS Sierra 而重写的新版 Karabiner。V2 由十条复杂修改(Complex Modifications)规则组成:轻按 Caps Lock 发送 Escape;按住则变成 Hyper(✱),由 Karabiner-Elements 同时按住右侧的 ⌃ ⌥ ⇧ ⌘ 四个修饰键。因此 Hyper 仍可与左侧修饰键组合,大多数应用也能正常识别。

Mac V2 布局图:完整键盘上标出每个键在 Hyper 下的功能,图中文字为英文
V2 README 中的布局图(英文)。图中少数应用键与本页表格不一致,表格以规则文件为准。

Caps Lock 键

按键效果
轻按 Caps LockEscape
按住 Caps LockHyper(✱),即同时按住右侧的 ⌃ ⌥ ⇧ ⌘
✱ EscapeCaps Lock。README 注明了一个缺陷:打开后很难再关掉

导航

单按 Hyper 时移动光标;再加一个左侧修饰键,则分别用于选择文本、移动指针、切换标签页与应用,或操作桌面空间。

键✱ 移动✱ ⌘ 选择✱ ⌥ 指针✱ ⇧ 切换✱ ⌃ 桌面空间
H←⇧←指针左移上一个标签页(⌃⇧Tab)左侧桌面空间(⌃←)
J↓⇧↓指针下移下一个应用(⌘Tab)当前应用的所有窗口(⌃↓)
K↑⇧↑指针上移上一个应用(⇧⌘Tab)调度中心(⌃↑)
L→⇧→指针右移下一个标签页(⌃Tab)右侧桌面空间(⌃→)
UPage Up⇧Page Up———
IHome⇧Home———
OEnd⇧End———
PPage Down⇧Page Down———

鼠标

按键效果
✱ ← ↓ ↑ →移动指针,与 ✱ ⌥ H J K L 相同
✱ Return左键单击
✱ ⌘ Return右键单击

删除

按键发送删除内容
✱ N⌥⌫光标前的一个词
✱ M⌫光标前的一个字符
✱ ,⌦光标后的一个字符
✱ .⌥⌦光标后的一个词
✱ ⌘ N、✱ ⌘ M⌘⌫从光标处删到行首

窗口与标签页

按键发送效果
✱ Tab⌘Tab下一个应用
✱ ⌘ Tab⇧⌘Tab上一个应用
✱ Q⌘Q退出应用
✱ W⌘W关闭标签页
✱ S⌃Tab下一个标签页
✱ ⌘ S⌃⇧Tab上一个标签页
✱ A⌃⌥⇧⌘A留给窗口管理工具 Moom
✱ ⌘ A⌃↑调度中心

终端按键

按键发送用途
✱ Z⌃Z挂起任务(SIGTSTP)
✱ X⌃R在 IDE 中运行
✱ C⌃C中断(SIGINT)
✱ V⌃VVim 前缀
✱ B⌃Btmux 的默认前缀
✱ D⌃D输入结束(EOF)

应用

README 建议把这些换成你自己常用的应用。

键✱✱ ⌘
ESafari访达
RiTerm2预览
TVisual Studio CodeTypora
D⌃D(见上文)词典
F⌃⌥⇧⌘F,留给 AlfredDash
GIntelliJ IDEAGoogle Chrome

功能键

V2 假定 F1 到 F12 作为标准功能键使用,按住 Hyper 时再恢复键帽上印的功能。对于带 Touch Bar 的 MacBook Pro,README 建议在 Karabiner-Elements › Function Keys 中打开「Use all F1, F2, etc. keys as standard function keys」。

键✱键✱
F1降低屏幕亮度F7上一首
F2提高屏幕亮度F8播放或暂停
F3调度中心F9下一首
F4启动台F10静音
F5降低键盘背光F11降低音量
F6提高键盘背光F12提高音量

全尺寸键盘上才有的键:

键✱
F13(Print Screen)上一首
F14(Scroll Lock)下一首
F15(Pause)静音
Insert、Delete小幅提高、降低屏幕亮度
Home、End小幅提高、降低键盘背光
Page Up、Page Down小幅提高、降低音量

上档符号

键✱ 输入
1 2 3 4 5 6 7 8 9 0! @ # $ % ^ & * ( )
- =_ +
[ ]( )
;!
'=
✱ ⌘ ;:
✱ ⌘ '=

最后四行让 != 和 := 输入起来更顺手。

其他按键

按键发送效果
✱ `⌃⇧⌘4截取选定区域,存入剪贴板
✱ ⌘ `⇧⌘4截取选定区域,存为文件
✱ Delete⌘⌫在访达中移到废纸篓
✱ / 与 ✱ \⌘/在许多编辑器中注释或取消注释
✱ Space⌃Space切换输入法

当年的安装方法

以下步骤来自 V2 的 README,仅作记录。

  1. 下载并安装 Karabiner-Elements。
  2. 在 Safari 中打开下面的地址导入规则:
    karabiner://karabiner/assets/complex_modifications/import?url=https://raw.githubusercontent.com/Vonng/Capslock/main/mac_v2/capslock.json
    也可以把 capslock.json 复制到 ~/.config/karabiner/assets/complex_modifications/,mac_v2 目录下的 make install 做的就是这件事。
  3. 在 Karabiner-Elements 中打开 Complex Modifications 标签页,点按 Add Item,再启用你需要的规则。
  4. 如需更换应用或修改其他按键,编辑 ~/.config/karabiner/assets/complex_modifications/ 中导入的那份文件。
说明

README 原本的导入链接指向仓库的 mac/ 目录,如今那里存放的是 V3;它的第二个链接指向 Karabiner-Elements 规则库,那里现在收录的也是 V3。上面的地址指向的是 V2 的文件。

文件

V2 的全部文件都在仓库的 mac_v2/ 目录中。

文件说明
capslock.jsonV2 的十条规则,可直接导入
karabiner.json包含同一组规则的完整 Karabiner-Elements 配置。make all 会用它覆盖 ~/.config/karabiner/karabiner.json,替换你现有的全部设置
makefile上文提到的 install 与 all 两个目标
README.mdV2 的原始文档

与 V3 的区别

  • 平面。 V2 每次只让 Hyper 与一个左侧修饰键组合,因此只有少数几个平面。V3 允许 Hyper 与四个左侧修饰键任意组合,最多可得 16 个平面。
  • **改动的按键。**在 V3.1 中,F13 和 F14 改为截屏控制,不再是上一首和下一首;✱ ⌘ D 改为执行「查询」(Define),不再打开词典;聚焦搜索(Spotlight)取代了启动台。

6.2 - Mac V1

Capslock Mac V1:2015–2017 年的 private.xml,借助 Seil 和旧版 Karabiner 在 OS X 10.10 与 10.11 上把 Caps Lock 变成 Hyper。
已归档,不再维护

Mac V1 运行在旧版 Karabiner 与 Seil 之上,适用于 OS X 10.10 Yosemite 和 10.11 El Capitan。旧版 Karabiner 无法在 macOS 10.12 Sierra 及更高版本上运行,所以 V1 在如今的 Mac 上都用不了。它先被 Mac V2 取代,目前持续维护的是Mac V3。

Mac V1 是 Capslock 在 Mac 上的第一个版本,需要两个工具配合:先用 Seil 把 Caps Lock 发出的键码改为 80,也就是 F19 的键码;再由 Karabiner 读取 V1 的 private.xml,在按住这个键时把它变成 Hyper(✱)。每组快捷键都是一个独立条目,可以在 Karabiner 的偏好设置中分别开启。

Mac V1 布局图:完整键盘上标出各键功能,键位标注为英文,颜色图例为中文
V1 README 中的布局图。键位标注为英文,颜色图例为中文;图中部分应用键与本页列表不一致。

Caps Lock 键

按键效果
按住 Caps LockHyper(✱)
轻按 Caps LockEscape,或用 ⌃Space 切换输入法。这是两个互相冲突的独立条目,只能开启其中一个
✱ EscapeCaps Lock
✱ SpaceEscape

导航

按住 Hyper 移动光标;再加上左侧 ⌘,就会边移动边选择。

键✱ 移动✱ ⌘ 选择
H←⇧←
J↓⇧↓
K↑⇧↑
L→⇧→
UPage Up⇧Page Up
IHome⇧Home
OEnd⇧End
PPage Down⇧Page Down

删除

按键发送删除内容
✱ N⌥⌫光标前的一个词
✱ M⌫光标前的一个字符
✱ ,⌦光标后的一个字符
✱ .⌥⌦光标后的一个词

窗口与标签页

按键发送效果
✱ A⌃⌥⇧⌘A留给窗口管理工具 Moom
✱ ⌘ AF11显示桌面
✱ Q⌘Q退出应用
✱ Tab⌘Tab下一个应用
✱ ⌘ Tab⇧⌘Tab上一个应用
✱ S⌃Tab下一个标签页
✱ ⌘ S⌃⇧Tab上一个标签页
✱ W⌘W关闭标签页

终端按键

按键发送用途
✱ Z⌃Z挂起任务(SIGTSTP)
✱ X⌃Btmux 的默认前缀
✱ C⌃C中断(SIGINT)
✱ D⌃D输入结束(EOF)

应用

README 建议把这些换成你自己常用的应用。

键✱✱ ⌘
EGoogle Chrome,也可通过另一个条目改为 Safari访达
RiTerm⌃R,在 IDE 中运行
TTyporaMWeb
FDash词典
GIntelliJ IDEA—
VVisual Studio Code—

功能键

键✱键✱
F1降低屏幕亮度F7上一首
F2提高屏幕亮度F8播放或暂停
F3调度中心F9下一首
F4启动台F10静音
F5降低键盘背光F11降低音量
F6提高键盘背光F12提高音量

全尺寸键盘上才有的键:

键✱
Insert、Delete小幅提高、降低屏幕亮度
Home、End小幅调节键盘背光
Page Up、Page Down小幅提高、降低音量
Scroll Lock静音
Pause播放

上档符号

键✱ 输入
1 2 3 4 5 6 7 8 9 0! @ # $ % ^ & * ( )
- =_ +
[ ]( )
;_
'=

鼠标

按键效果
✱ ← ↓ ↑ →移动指针
✱ Return左键单击
✱ \右键单击

其他按键

按键发送效果
✱ /⌘/在许多编辑器中注释或取消注释
✱ `⌃⇧⌘4截取选定区域,存入剪贴板
✱ ⌘ `⇧⌘4截取选定区域,存为文件

当年的安装方法

以下步骤来自 V1 的 README,仅作记录。

  1. 下载并安装 Seil。
  2. 下载并安装 Karabiner。
  3. 在 Seil 中勾选 Change the caps lock key,并把键码设为 80。
  4. 在 Karabiner 中打开 Misc & Uninstall 标签页,点按 Open private.xml,用 V1 的private.xml 替换这个文件。mac_v1 目录下的 setup 脚本可以代劳,它会把文件复制到~/Library/Application Support/Karabiner/private.xml。
  5. 回到 Change Key 标签页,点按 Reload XML,再启用你需要的条目。
Seil 的 Setting 标签页:已勾选 Change the caps lock key 并填入键码 80,界面为英文
第 3 步:在 Seil 中把 Caps Lock 设为键码 80(英文界面)。
Karabiner 的 Misc & Uninstall 标签页,箭头指向 Open private.xml 按钮,右侧访达窗口中显示该文件,界面为英文
第 4 步:在 Karabiner 中点按 Open private.xml,找到要替换的文件(英文界面)。

文件

V1 的全部文件都在仓库的 mac_v1/ 目录中。

文件说明
private.xml供旧版 Karabiner 使用的 V1 配置
setup把 private.xml 复制到 Karabiner 目录的 shell 脚本
README.mdV1 的原始文档

与 V3 的区别

  • 工具。 V1 需要 Seil 和旧版 Karabiner,配置文件是 XML。从 macOS Sierra 起, Karabiner-Elements 取代了旧版 Karabiner;V2 和 V3 都是它的 JSON 规则,也不再需要 Seil。
  • 轻按 Caps Lock。 V1 可以在 Escape 和切换输入法之间二选一;V3 轻按时发送 Escape。

6.3 - Windows

Capslock 的起点:2013–2015 年的 AutoHotkey 脚本,连同源码和一个旧的预编译可执行文件一并保留。
已归档,不再维护

Windows 版是一份 2013–2015 年的 AutoHotkey 脚本。Mac V2 的 README 列出的适用系统是 Windows XP、Vista、7、8 和 10。无论脚本还是预编译的可执行文件,都没有在当前的 Windows 上测试过。

Capslock 始于 2013 年的 Windows,比第一个 Mac 版本早两年。这份脚本把被视为「无用键」的 Caps Lock 变成像 Ctrl、Alt 一样的功能键,与键盘上几乎所有其他键组合使用。Caps Lock 原本的大小写锁定始终保持关闭,这项功能改由 Caps Lock + ` 承担。

它的部分按键绑定与 Mac 版不同。Mac V2 的 README 提到了这一点,并说明 Windows 版已不再维护。

功能一览

README 用一张表概括了这份脚本。下表沿用这份概括,并依据脚本本身补充了细节。

按键功能
Caps LockEscape,Vim 用户尤其顺手
Caps Lock + `打开或关闭大小写锁定
Caps Lock + H J K LVim 风格的方向键
Caps Lock + W B向右、向左移动一个词
Caps Lock + U I O PPage Up、Home、End、Page Down
Caps Lock + N M , .删除:Ctrl+Backspace、Backspace、Delete、Ctrl+Delete
Caps Lock + Z X C V A YCtrl+Z、X、C、V、A、Y,即 Windows 常用的编辑快捷键
Caps Lock + 方向键移动鼠标指针
Caps Lock + Enter鼠标单击
Caps Lock + F1 – F6静音、降低音量、提高音量、播放或暂停、下一首、停止
Caps Lock + Q S窗口与标签页控制
Caps Lock + ; ' [ ]便捷映射
Caps Lock + D F E R T常用程序,由用户自行设定
Caps Lock + 1 – 5Visual Studio 快捷键,由用户自行设定
Caps Lock + 6 7 8 9 0 - =上档符号,相当于按住 Shift

运行方式

README 没有给出安装步骤。仓库中保存了这份脚本的两种形式:

  • 源码 CapsLock.ahk:用 AutoHotkey 运行,采用 AutoHotkey v1 语法。
  • 预编译的可执行文件 CapsLock.exe:无需安装 AutoHotkey 即可运行。
旧的未签名二进制文件CapsLock.exe 是一个旧的、未签名的 32 位预编译文件,没有在当前的 Windows 上测试过。如果想试用这套布局,请改为阅读源码,并用 AutoHotkey v1 运行。

文件

Windows 版的全部文件都在仓库的 win/ 目录中。

文件说明
CapsLock.ahkAutoHotkey 源码
CapsLock.exe预编译的可执行文件,207,868 字节
README.md原始的功能概括

仓库中 CapsLock.exe 的 SHA-256 为e0d6a4d2de155860aed164281ed16f5871aaca95cccc6fe1d46db2b16004cb80。