01 / 核心思路
单击 Escape,按住 Hyper
◇ 一个键,两份互不冲突的职责
- 轻点一下发送
Esc,让最高频的按键回到手指旁边 - 按住则发送 ✱ Hyper:右侧四个修饰键同时按下
- Alfred、Moom 与 IDE 收到的都是普通组合键
✱ Esc仍可切换原始的大写锁定状态✱ Space仍可切换输入法
什么都没有失去,一切都离手更近。
CapsLock 补完计划 · V3.1 · Karabiner-Elements
单击是 Escape,按住是 Hyper。
一个被遗忘的按键,展开十六个键盘控制平面。
Apache-2.0 开源 · 不常驻额外后台进程 · 无需付费
为什么一个键就够了
键盘上最顺手的那个键什么都不做。下面是它可以做的事。
01 / 核心思路
◇ 一个键,两份互不冲突的职责
Esc,让最高频的按键回到手指旁边✱ Esc 仍可切换原始的大写锁定状态✱ Space 仍可切换输入法什么都没有失去,一切都离手更近。
02 / 可寻址空间
◇ 四个修饰键,四个二进制位,十六个平面
⌘ ⌥ ⌃ ⇧ 就是四个二进制开关键盘不再是一个平面,而是一段地址空间。
# 平面 = 左侧 ⌘⌥⌃⇧ 的四位二进制组合
✱ 平面 0 89 个映射
✱⌘ 平面 1 59 个映射
✱⌥ 平面 2 38 个映射
✱⇧ 平面 8 25 个映射
✱⌘⇧ 平面 9 21 个映射
✱⌥⇧ 平面 10 21 个映射
# 已用 9 个平面,还剩 7 个
03 / 配置即数据
◇ 一个 JSON 文件,没有隐藏状态
capslock.yml,跑一条 make先看懂,再定制。
平面里装着什么
键盘按用途分区着色,一个键的邻居就告诉你它做什么。下面的数量是 V3.1 中各类目实际包含的映射数。
HJKL 移动,UIOP 翻页。叠加修饰键即可选择文本,切换标签页、窗口、应用与桌面,或者驱动指针与滚轮。
N M , . 就在导航键正下方,向前向后按字符、单词或整行删除,手不必离开核心区。
小键盘变成一只完整的鼠标:八个指针方向、四个滚轮方向、五个按键,并带有加速与减速变体。
关闭标签页、窗口或应用;在应用、窗口、标签页与桌面之间切换;睡眠、锁屏与注销。窗口布局交给 Moom 或 Magnet。
黄色按键用于启动或切换浏览器、终端、编辑器、IDE 与启动器。这些只是默认值,不是约束。
⌃C ⌃D ⌃Z ⌃R 不再需要别扭的左手姿势,还有 Vim 与 Tmux 的前缀键,以及 Codex 和 Claude 各占一个键。
数字键 6–0 变成五个互相独立的文本剪贴板。Hyper 加 ⌘ 复制到某一槽位,单独 Hyper 从中粘贴。
程序员整天都在敲的标点 —— 圆括号、花括号、尖括号、下划线、冒号与感叹号 —— 都只有一个组合键的距离。
F1–F12 上的媒体、亮度、键盘背光与音量,反引号与 F13–F14 上的截图,以及导航键簇上的细粒度调节。
安装
一组 Karabiner-Elements 规则,没有别的东西需要安装,也不新增后台进程。
从官方网站下载,或者使用 Homebrew 安装。按 macOS 提示授予后台服务、辅助功能、输入监控与驱动扩展权限。
brew install --cask karabiner-elements在任意浏览器中打开下面这个 URL,它会把配置直接交给 Karabiner-Elements。点击 Import,再在 Complex Modifications 中启用需要的规则。
karabiner://karabiner/assets/complex_modifications/import?url=https://raw.githubusercontent.com/Vonng/Capslock/main/mac_v3/capslock.json来自真实用户
这些不是市场文案,而是两封完整的用户来信 —— 来自把补完计划用进日常工作的人。
我只想向这位开发者朋友致以最诚挚的谢意,感谢您在 CapsLock Enhancement 中付出的辛苦努力!
先前我也用 Karabiner-Elements 改了个 Hyper/Escape 切换键,也像你一样配置了几个应用快捷方式。
但你简直把这个东西提升到了一个全新的境界,太不可思议了!我把你的键位参考图打印下来贴在了显示器上!
我正在慢慢微调,让它逐渐适配我自己的工作流。感谢你,向我展示了一种赋予键盘多个 Hyper 控制平面的可能性!
在这一切的背后,一定会有一个如此优雅而简单的解法:无论是花费十年、一百年还是一千年,当我们最终发现它时,都会面面相觑 —— 除了它,还能是什么呢? —— 约翰·阿奇博尔德·惠勒,《纽约科学院年鉴》,480(1986)
作者您好,
我今天偶然发现了您的 git 库
github.com/Vonng/Capslock,下载试用了一下,真是佩服得五体投地。这个 script 让我真正爱上了键盘。
刚好我用的也是 Filco 87 双模键盘,配合这个 script,真是感觉要飞起来了!
发邮件只是为了表达衷心的感谢,希望您以后还能继续维护下去。
再次衷心感谢!
一个想法,十三年
最初的补完计划在 Windows 上把这个键变成修饰键。现已归档,但仍保留在仓库中。
移植到初代 Karabiner 及其 XML 私有配置。
基于 Karabiner-Elements 的复杂修饰重写。十六个控制平面在此成形,项目也进入官方陈列馆。
配置改为可读的 YAML 源文件,再编译成 Karabiner JSON,映射从此可以当作数据来审阅。
6–0 上的五个剪贴板,C 上的 Codex 与 Claude,F13 与 F14 上的截图,以及 Spotlight 与 Alfred 5 的新默认值。
安装之前
不会。Hyper 加 ⎋ 就能切换原始的大写锁定状态,macOS 的指示灯照常工作。实际使用中,大写锁定一个月用不了几次,而 Escape 一分钟要用好几次 —— 这正是交换二者的理由。
可以。Hyper 不是私有信号,它就是键盘右侧的 ⌘ ⌥ ⌃ ⇧ 同时按下。Alfred、Moom、Magnet、Raycast 以及各类 IDE 收到的是一个完全普通的组合键,可以像绑定其他快捷键一样绑定它。
不必。配置器可以在浏览器里改写黄色按键背后的应用,并导出新的 JSON 文件。需要更深的定制,就 fork 仓库、修改 mac_v3/capslock.yml,再重新生成 JSON。
不需要。布局以 ANSI 键盘为蓝本,内置键盘与外接键盘同样适用。小键盘鼠标层需要一块数字小键盘,其余功能都不需要。
Windows 上的 AutoHotkey 版本已归档,不再维护。Linux 暂不支持:各桌面环境差异太大,一份配置难以覆盖。欢迎用 xmodmap 之类工具移植。
不收费,也不收集任何数据。这套规则是以 Apache-2.0 授权的数据,由 Karabiner-Elements 解释执行;没有账号,没有遥测,也没有独立的后台进程。