CapslockMagic
中文文档 | README | Karabiner Gallery | Github Repo | Gitee Repo
Make Capslock Great Three!
让 Capslock 第三次伟大!
快速开始
Windows
1.下载
git clone https://github.com/miozus/CapslockMagic.git
2.运行
- 解压文件
tools/AutoHotkey_H/ 的压缩文件
- (可选) thqby/AutoHotkey_H 下载最新发行版。
- 右键单击
AutoHotKey.exe
(x64 / x32), 选择属性 > 安全 > 兼容性 > 勾选管理员权限 > 确定。 - 右键单击
CapslockPlus.ahk
打开方式,选择到上述解压目录的AutoHotKey.exe
打开。
MacOS
Magic
在 MacOS 平台载体也是 Karabainer , 已实现了 分号特殊符
(Semicolon Pull Down Symbol
)和 数字小键盘
(3 Awake Digital Keyboard
) 的功能。没有猴子输入法。
直接从云端导入配置(免下载)
使用 Safari 浏览器打开链接,会从云端加载到 Karabiner-Element,在复杂映射栏目点击左下角 add-rule
, 然后 Enable
启用配置。
karabiner://karabiner/assets/complex_modifications/import?url=https://raw.githubusercontent.com/miozus/CapslockMagic/master/tools/karabiner/caps_lock_magic.json
如何使用
将 ⇪CapsLock(大写锁定键)改造为一个强力的功能修饰键(✱ Hyper ),奇迹般地提高操作效率与生产力。
参考中文文档: CapsLock-Enhancement
基本操作逻辑一致的,原作者写的很详细,感兴趣的功能直接用键盘试一试,这里不再赘述。
以下是 Magic 进化的功能:
3️⃣ 数字小键盘
按住数字 3️⃣ 不松手,处在数字模式,松开时退出。
想象成稍微倾斜的数字小键盘,方便输入验证码、手机号码、坐标、确认、删除。
这里取消了映射到 F3 的按键,因为 F3 为了成全整个模式,牺牲了它自己。
这里把 F1~12 加上, 是因为他们都和数字有关,而且我的 60 配列键盘 fn2
键在右下角对称 Ctrl
键, 单个键要瞟一眼键盘,再整组合键的话,就像龙抓手,太难按了。
; 分号特殊符(特舒服)
按住分号 ; 不松手,处在分号特殊符模式,松开时退出。(猴子输入法是按下就松开,这里不松开,要卡住按下的时间)
这样排布设计来自咸鱼阿康, 我们都用 Vim,所以本人优化的方向,也在于提升 Vim 体验:
元素定位
- H
%
定位括号:修改函数参数。 - J
;
定位上个操作位置,使用频繁高。 - K
`
反引号常用来写文档,引用代码。 - L
"
定位字符串,天天见。因为占用了分号键,就让邻居顺便补偿给它。 - E
^
U$
定位语句开头/末尾,注意观察数字键上 Vim 和正则表达式,对于前后的按键刚好反过来。这太反人类了!因为这个设定折磨我太久,所以使用分号模式时仿佛看到沙漠绿洲。 - B
{
定位括号内,bracket 原生操作大小括号,放在一起。 - Y
@
执行宏,小技巧常用qq
开启记录,左右搭配。也不至于误触。
游戏见闻
- N
-
M+
我玩游戏发现的,物品计数器左边小右边大,符合直觉。 - S E D F 看上去正好像方向键
<
^
>
左手刚好放在热键区。我思考过,游戏中左手默认方向键 W A S D 是因为小拇指可以方便按修饰键,太浪费了。
单词缩写
- V
|
Vertical 垂直线,V 字母从中间对称分开,V 键大概在键盘的中央(; shift V 组合键映射为中文顿号、
)。 - T
~
Tide 波浪线(; shift T 组合键映射为 4 个空格)。 - C
.
comma / dot / period 点。这里按两个键映射一个键的原因,一是可用脚本保证必须输出英文字符,不受中文句号影响;二是 JQ 元素定位类语法$.
的连击。 - X
_
Xia Hua Xian 下划线。 - G
!
Gan Tan Hao 感叹号。 - D
=
Deng Hao 等号。
常用操作
- Z 撤销操作:如果打错字或误删,撤销就好了。
- O 切换输入法:能不用手掌按 Ctrl 键,就不要去按了,让双手保持在热键区。
⌨️ 猴子输入法
这是 Windows 独占功能,在 /data/UserDictionary.ahk
中,使用 map 数据结构保存着用户词典(简称猴子词典,方便好记)。
- key:自定义的缩写,怎么好记怎么来。
- value: 指令集,主要分为两类
- 1️⃣
xxDictionary
纯字符串词典:。其他所有的变量 都是这类,比如代码片段(支持换行和缩进),邮箱,网址,emoji 等。 - 2️⃣
secretDictionary
函数词典。它代表用户定义的一系列 AHK 指令集的可执行函数。- 这里设计为必须写注释,不写不生效。
- 比如添加一行
"sleep", "睡眠",
- 还要在
bin\SemicolonHook.ahk
的execSemicolonAbbr
方法中添加一种情况case "sleep": computerGoSleep()
- 比如添加一行
- 技巧:它可以用来写 Vim 的宏,完美的跨软件运行方案。
- 这里设计为必须写注释,不写不生效。
- 1️⃣
MacOS 仅将用户词典添加到内置输入法,作为打字候选项,或者无 IDE 匹配输出。
? 猴子词典支持导出到第三方输入法
已支持 MacOS | QQ拼音 | 搜狗拼音
根据需要调用 Converter
类的转换方法,获得用户自定义短语文件 ,通过局域网/蓝牙/微信等方式传输,导入输入法软件即可。具体步骤可参考项目文档中的案例。
; 选择性注释,开放转换接口
global macDictionary := UserDict.concat([emojiDict, csDict, privateDict, logoDict])
CapsLock & 9::
{
; 猴子词典 -> 苹果词典(枚举类参数可选 MAC/PINYIN/JSON)
Converter.convert(macDictionary, DictTypeEnum.MAC)
; 猴子词典 <- 苹果词典(弹窗选择文件)
; Converter.parse()
; 猴子词典 <- 苹果词典(文件目录)
; fileDir := "/dist/userdict4macos.plist"
; Converter.parse(fileDir)
}
A 禅模式
开启后,键盘进入 1.5 秒的监听状态,根据新的按键做出及时响应。
- 等待超时,会退出状态,或者按下 Esc 键,主动退出禅模式。
- 如果遇到菜单快速弹出作为收尾动作,这是正常现象,用于解除
Win
键的按键锁定,避免卡键的副作用。- A 的组合键,集成了窗口管理和鼠标控制的功能
? 窗口移动
禅模式:开启后,键盘进入 1.5 秒的监听状态,接下来会根据按键做出及时响应。默认情况下,等待超时,会退出状态,或者按下 Esc 键主动退出禅模式。
Caps Alt A 开启(可以松手了)
- H J K L 控制方向(Vim)
- ␣ 窗口回到屏幕中央
(菜单快速弹出,作为收尾动作,是为了解除 Win
键的按键锁定,避免卡键造成的副作用)
? 窗口定型
Caps Ctrl A 开启(一次性)
- H J K L 窗口占据上下左右(Vim)
- | 窗口占据屏幕中央
- N 窗口占据屏幕中央,大小适中
- [ ] 窗口占据偏左 / 右屏幕(2:1)
- M , 窗口最大/小化
- . 窗口大小回到上一个状态
?️ 鼠标控制
Caps Win A 或者 ; mm
开启(可以松手了)
- H J K L 控制方向(Vim)
- A 配合按住不放,降低鼠标移动速度
- I O 单击左 / 右
- U P 滚轮前 / 后
- N M 侧键前 / 后
- C V 复制/粘贴 选中文字
- G 指针回到窗口中央
程序员特供
V1.2.0 更新
?单手就调试
- 进入(二选一)
- 按住生效:按住数字键 4 不松手
- 循环使用(可松开4):猴子输入法打字
dbg
开启
- 退出
- 主动:Esc
- 被动:A I O S 增删改代码时,或 ␣ 打开计算器时默默退出
特别地,同时按下 Ctrl 键,左上角按键都获得增强功能。
V1.3.0 更新
? 宇宙编辑器
封装了编辑器的常见操作。(非 Neovim 的用户,可参考设计思想)
一般:需添加前缀 <leader>
(默认空格键)
- n 下一个错误
- j 快速修复
- o 大纲
- z 禅模式
- f 代码格式排版
- e 转到文件
- a 文件中查找
- s 左侧资源管理器中查看该文件
- h 该文件版本历史
- b 该行打断点
- rr 重构:重命名
idea 特供(vscode 相似接口不起作用)
- g 类名高亮时可生成代码
- , 参数换位左移
- . 参数换位右移
- v 重构:抽取变量
- m 重构:抽取为新方法
特殊:
- H 窗口标签:上一个(无前缀)
- L 窗口标签:下一个(无前缀)
通过用户自定义配置实现:
# Windows 复制粘贴到(默认/类似)位置 ->
tree .\CAPSLOCKMAGIC\TOOLS
│
├───code
│ └─keybindings.json -> Vscode 键位映射配置 -> C:\Users\<UserName>\AppData\Roaming\Code\User\keybindings.json
│
├───idea
│ ├─.ideavimrc -> Idea Neovim 插件配置 -> C:\Users\<UserName>\.ideavimrc
│ └─ macOS For All Magic.xml -> Idea 键位映射配置 -> C:\Users\<UserName>\AppData\Roaming\JetBrains\IntelliJIdea2022.1\keymaps\macOS For All Magic.xml
│
└───neovim
└─init.vim -> Neovim/Vscode 用户配置 -> C:\Users\<UserName>\AppData\Local\nvim\init.vim
1.跨平台键位映射方案增强
比如 Shift F6 代码重命名
源自 idea 插件(win+mac)的键位映射方案: samvtran/jetbrains-macos-keybindings-for-all
它主要做了 MacOS / Windows 的按键兼容。半年前开始使用它,移植到了 vscode。
2.Neovim 增强
比如 <leader>rr
代码重命名
特别地,在 Idea + Vscode 的 Neovim 插件(.ideavimrc + init.vim),对于调用编辑器动作接口,都做了统一适配。
这份配置记录了一年来,从化身八爪鱼敲键盘也无法退出 vim 的小白,到如今形成肌肉记忆的程序员,它吸收了众多设计思想:两本书,三四个开源仓库,十多个国内外视频,在各种编辑器摸爬滚打,删繁就简妥协后,获得相对平衡的结果。
3.AutoHotkey 增强
比如 ; lrr
代码重命名(前面加个小写的L
,代替 <leader>
键)
在插件 IDE.ahk 中的 IdeAction
类,封装了 1 方案的组合键。
V1.4.0 更新
?️ 爬虫零件箱
提供零件,可组合实现浏览器爬虫,点击网页元素,下载资源的自动化机器人。(实际案例下载文件数过万)
适用场景:
- 害怕 Python 爬虫而封禁IP,或解析资源路径困难。
- 可复制的网页预览的文件(非图片)
CapslockMagic\bin\util
├── Animation.ahk # 时间动画: 挂机运行非静止画面
├── FilePipe.ahk # 文件管道:导入导出和文件名添加日期
├── FileStream.ahk # 文件流:增删改查
├── Interceptor.ahk # 过滤器:不必每个点开看
├── Internet.ahk # 网络测试:是否断网
├── Location.ahk # 定位器:网页元素坐标
└── Logger.ahk # 日志:每条记录处理过程和结果
[2022-12-12 05:18:44] 4582-8 ? *** empty file
[2022-12-12 05:20:38] 4591-2 ? *** too big size
[2022-12-12 16:06:50] 4: ✅: source => destination | well-done
[2022-12-12 16:33:57] 9: ?⭐?: source ⇒ destination | not exist & create file & bug
历史版本比较
Magic
继承了 Capslock Enhancement
的经典设计(类似 HHKB 键盘),弥补了它在 Windows 平台的遗憾。
Magic
吸收了 MyKeymap
的实现细节和设计灵感,并修复了脚本语言向上兼容,采用面向对象的现代编码风格,让开发者更容易拓展和上手维护。
Magic
进化了 猴子输入法,可以管理任意的用户指令集,获得念咒语般的魔法。
Magic 增强功能
? 中英文管家
优化了写代码注释的体验,让脚本托管软件对应的中英文状态以及切换。
- 开发者在各种编辑器
VSCode
、Intelj Idea
、Vim
写完注释后,按 Caps 可以直接返回到Normal
模式。 - 如果切换到
Notion
写文档,默认使用中文,切回 IDE 默认变回英文。
? 内置猴子词典
词典是全新的命名空间,本质是 Map 数据结构,作为底层支撑着猴子输入法,不会和本地输入法冲突。这是半年来积累的实践,每天都在用,打字重复三次就考虑入库,灵感式更新。如果你想重写自己的词典,它非常有参考价值。
? 屏蔽热键
屏蔽了微软 Win 键相关的 一年也用不上几次但几百年都存在
的组合键,做组合键的吝啬鬼。
? 内置插件
Notion.ahk
支持粘贴不同语言的代码块、调整block
折叠或无序列表,左手删除字符,代码块语言格式;去掉粘贴文本格式等功能。
不太兼容,请重新编辑,内容很不错,感谢分享!
thanks
怎么覆盖了整个版面…我自用的是空格键. 用大写键的话,有的时候就不能单手了
caps 地理优势好(小拇指),空格键无论打字或写代码,容易触发副作用
副作用? 可能有吧,但已经习惯了空格键了,你的其他的东西我去看看
关于数字按键1234567890这个, 有一个好的构想方案就是 触摸版上定义区域去实现,不过没知道方法怎么和触摸板交互,估计要硬件层支持. 市面上有一个产品就是往触摸板上贴上一层模,然后就可以在触摸板上输入数字了.
你的构想方案,在 mac 上有人实现了,某宝也有卖数字键盘贴膜,我印象中见到过,不过….触摸板不如键盘普及率高。
网上搜到的产品介绍 https://www.iplaysoft.com/nums.html
是啊,但是如果要做笔记本键盘录入数字,我手机在旁边的话,我的选择是将手机和电脑连接,这样手机上的数字按键就直接到电脑屏幕了.当然选择重定义键盘的数字按键也是很好的.
可能是表格那个地方的影响,可以从excel拷过来
谢谢提示,已经替换成图片了。?提高审核速度的小建议:作者每次发布直接显示在网页; 同时每次更新文章,也会推送给管理员,后面管理员审核不过可以撤稿 / 隐藏内容和提示(文章排版不兼容,待修改后查看)。 CSDN / 知乎/博客园/简书,用户数量多,也应该是这样的流程。
感谢建议 不过应该不会采用撤回机制,对用户撤回感情伤害远大于审核不通过
啊啊啊.你搞的影子输入法代码实在太多,我想改输入法上屏后文本提示,功能按键按下之后还能继续识别后面的文本,一定是哪里的正则表达式自动将上屏的内容格式化截取了,使得自定义的函数………..啊啊啊啊我想改,太费劲了,代码关联太多了
猴子模式下, 请问有办法实现 new filename.txt 新建一个输入的文件吗?
感谢使用。?猴子模式底层使用了 InputHook 特性和 map 数据结构,只适合静态的字典,映射的键(key)必须是不可变的字符串。如果想要拓展猴子输入法,动态创建文件,需要梳理以下问题:1) 在什么程序中创建文件?怎么获取当前相对路径?(创建文件可以用 FileAppend 函数) 2) 猴子模式条件判断分支,增加自定义函数监听键盘输入(此时 ih.Match == filename)。组合起来就可以了。
遇到一个问题,猴子输入模式下,请问怎么退格删除前面的字符?
已经实现了逐个删除字符,但是删除之后要让新的字符追加在后面好像不行吗? input buffer是死的不能更新,除非不用onchar的上屏方式? 按照一个一个字符的方式进行上屏? 柚子输入法和影子输入法好像是使用逐个字符上屏的方式,你可以研究一下
进入猴子输入法状态时,按 Backspace 删除键,删除字符,像栈结构,只能从右往左删。具体参考 AHK_V2 文档 InputHook ?
你这个口号,特统领都说好?
我已经完全实现了我要的需求, 输入的内容可以进行即使删除和修改.
这有一个bug呀, 3热键长按 是有效的,但是,数字3一旦松开,怎么就发送数字1出来了? 这有平时打这个3,就打出来的是31,这个你有遇到过吗?
1) 我这里测试,单独长按3松开:无输出。短按3松开:数字3。没有多出来数字。2) 我排查 bug 的方法,双击托盘图标 ahk 脚本,按 F5 刷新,重复按需要测试的键位,再按 F5 刷新。然后看日志,脚本执行到代码哪一行会出现多余的数字。?
1
太强了
分号键怎么打,不能打分号键啊?能切换开关吗?我需要的时候打开,不需要的关掉,这样可以用原生键盘。
分号键 ; + j = ; 总开关在 CapslockMagic.ahk ,注释掉禁用分号模式。 ; allHotkeys.Push(“*;”)
中文的分号按下 ; 然后 ffhc 就出来了。这样设计,避开系统输入法大小写影响。
谢谢!?
分号键 ; + j = ; 总开关在 CapslockMagic.ahk ,注释掉第二行的分号,禁用分号模式。 allHotkeys := [] ; allHotkeys.Push(“*;”) allHotkeys.Push(“*3”) allHotkeys.Push(“*4”)
能把猴子输入法单独拧出来做一个开源软件么?这样可以当跨平台的代码片断管理器用了,然后,来个候选项,类似于vscode的代码提示那样,考虑一下,我觉得猴子输入法完全可以充当这一功能。
猴子输入法是哪个文件,函数入口在哪?我想研究研究,我现在很需要一个代码片断管理功能,跨IDE的。