CapslockMagic 让 Capslock 第三次伟大!已开源

让 Capslock 第三次伟大!

CapslockMagic

中文文档 | README | Karabiner Gallery | Github Repo | Gitee Repo

Make Capslock Great Three!

让 Capslock 第三次伟大!

CapslockMagic 让 Capslock 第三次伟大!已开源 CapslockMagic 让 Capslock 第三次伟大!已开源 CapslockMagic 让 Capslock 第三次伟大!已开源

 

快速开始

Windows

1.下载

git clone https://github.com/miozus/CapslockMagic.git

2.运行

  • 解压文件 tools/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 ),奇迹般地提高操作效率与生产力。

CapslockMagic 让 Capslock 第三次伟大!已开源

参考中文文档: CapsLock-Enhancement

基本操作逻辑一致的,原作者写的很详细,感兴趣的功能直接用键盘试一试,这里不再赘述。

以下是 Magic 进化的功能:

3️⃣ 数字小键盘

CapslockMagic 让 Capslock 第三次伟大!已开源

按住数字 3️⃣ 不松手,处在数字模式,松开时退出。

想象成稍微倾斜的数字小键盘,方便输入验证码、手机号码、坐标、确认、删除。

这里取消了映射到 F3 的按键,因为 F3 为了成全整个模式,牺牲了它自己。

这里把 F1~12 加上, 是因为他们都和数字有关,而且我的 60 配列键盘 fn2 键在右下角对称 Ctrl 键, 单个键要瞟一眼键盘,再整组合键的话,就像龙抓手,太难按了。

; 分号特殊符(特舒服)

CapslockMagic 让 Capslock 第三次伟大!已开源

按住分号 ; 不松手,处在分号特殊符模式,松开时退出。(猴子输入法是按下就松开,这里不松开,要卡住按下的时间)

这样排布设计来自咸鱼阿康, 我们都用 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 键,就不要去按了,让双手保持在热键区。

⌨️ 猴子输入法

CapslockMagic 让 Capslock 第三次伟大!已开源

这是 Windows 独占功能,在 /data/UserDictionary.ahk 中,使用 map 数据结构保存着用户词典(简称猴子词典,方便好记)。

  • key:自定义的缩写,怎么好记怎么来。
  • value: 指令集,主要分为两类
    • 1️⃣ xxDictionary 纯字符串词典:。其他所有的变量 都是这类,比如代码片段(支持换行和缩进),邮箱,网址,emoji 等。
    • 2️⃣ secretDictionary 函数词典。它代表用户定义的一系列 AHK 指令集的可执行函数。
      • 这里设计为必须写注释,不写不生效。
        • 比如添加一行 "sleep", "睡眠",
        • 还要在 bin\SemicolonHook.ahk 的execSemicolonAbbr 方法中添加一种情况 case "sleep": computerGoSleep()
      • 技巧:它可以用来写 Vim 的宏,完美的跨软件运行方案。

MacOS 仅将用户词典添加到内置输入法,作为打字候选项,或者无 IDE 匹配输出。

? 猴子词典支持导出到第三方输入法

已支持 MacOS | QQ拼音 | 搜狗拼音

CapslockMagic 让 Capslock 第三次伟大!已开源

根据需要调用 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 键主动退出禅模式。

CapslockMagic 让 Capslock 第三次伟大!已开源

Caps Alt A 开启(可以松手了)

  • H J K L 控制方向(Vim)
  •  窗口回到屏幕中央

(菜单快速弹出,作为收尾动作,是为了解除 Win 键的按键锁定,避免卡键造成的副作用)

? 窗口定型

CapslockMagic 让 Capslock 第三次伟大!已开源

Caps Ctrl A 开启(一次性)

  • H J K L 窗口占据上下左右(Vim)
  • | 窗口占据屏幕中央
  • N 窗口占据屏幕中央,大小适中
  • [ ] 窗口占据偏左 / 右屏幕(2:1)
  • M , 窗口最大/小化
  • . 窗口大小回到上一个状态

? 鼠标控制

CapslockMagic 让 Capslock 第三次伟大!已开源

Caps Win A 或者 ; mm 开启(可以松手了)

  • H J K L 控制方向(Vim)
    • A 配合按住不放,降低鼠标移动速度
  • I O 单击左 / 右
  • U P 滚轮前 / 后
  • N M 侧键前 / 后
  • C V 复制/粘贴 选中文字
  • G 指针回到窗口中央

 

程序员特供

V1.2.0 更新

?单手就调试

CapslockMagic 让 Capslock 第三次伟大!已开源

  • 进入(二选一)
    • 按住生效:按住数字键 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 进化了 猴子输入法,可以管理任意的用户指令集,获得念咒语般的魔法。

CapslockMagic 让 Capslock 第三次伟大!已开源

Magic 增强功能

? 中英文管家

优化了写代码注释的体验,让脚本托管软件对应的中英文状态以及切换。

  • 开发者在各种编辑器 VSCodeIntelj IdeaVim 写完注释后,按 Caps 可以直接返回到 Normal 模式。
  • 如果切换到 Notion 写文档,默认使用中文,切回 IDE 默认变回英文。

? 内置猴子词典

词典是全新的命名空间,本质是 Map 数据结构,作为底层支撑着猴子输入法,不会和本地输入法冲突。这是半年来积累的实践,每天都在用,打字重复三次就考虑入库,灵感式更新。如果你想重写自己的词典,它非常有参考价值。

? 屏蔽热键

屏蔽了微软 Win 键相关的 一年也用不上几次但几百年都存在 的组合键,做组合键的吝啬鬼。

内置插件

Notion.ahk 支持粘贴不同语言的代码块、调整block折叠或无序列表,左手删除字符,代码块语言格式;去掉粘贴文本格式等功能。

给TA捐赠
共{{data.count}}人
人已捐赠
应用

将Listary结合AHK脚本新建文件(夹) new file.txt

2022-3-11 12:12:59

应用

做了一个找白色的按键宏,大家看看有没有什么地方可以改进的。

2022-3-16 15:13:39

32 条回复 A文章作者 M管理员
  1. hexuren

    不太兼容,请重新编辑,内容很不错,感谢分享!

  2. hexuren
    1河许人给您打赏了¥5
  3. ahkjoo

    怎么覆盖了整个版面…我自用的是空格键. 用大写键的话,有的时候就不能单手了

    • 麻花藤

      caps 地理优势好(小拇指),空格键无论打字或写代码,容易触发副作用

    • ahkjoo

      副作用? 可能有吧,但已经习惯了空格键了,你的其他的东西我去看看

  4. ahkjoo

    关于数字按键1234567890这个, 有一个好的构想方案就是 触摸版上定义区域去实现,不过没知道方法怎么和触摸板交互,估计要硬件层支持. 市面上有一个产品就是往触摸板上贴上一层模,然后就可以在触摸板上输入数字了.

    • 麻花藤

      你的构想方案,在 mac 上有人实现了,某宝也有卖数字键盘贴膜,我印象中见到过,不过….触摸板不如键盘普及率高。

    • ahkjoo

      是啊,但是如果要做笔记本键盘录入数字,我手机在旁边的话,我的选择是将手机和电脑连接,这样手机上的数字按键就直接到电脑屏幕了.当然选择重定义键盘的数字按键也是很好的.

  5. hexuren

    可能是表格那个地方的影响,可以从excel拷过来

    • 麻花藤

      谢谢提示,已经替换成图片了。?提高审核速度的小建议:作者每次发布直接显示在网页; 同时每次更新文章,也会推送给管理员,后面管理员审核不过可以撤稿 / 隐藏内容和提示(文章排版不兼容,待修改后查看)。 CSDN / 知乎/博客园/简书,用户数量多,也应该是这样的流程。

    • hexuren

      感谢建议 不过应该不会采用撤回机制,对用户撤回感情伤害远大于审核不通过

    • ahkjoo

      啊啊啊.你搞的影子输入法代码实在太多,我想改输入法上屏后文本提示,功能按键按下之后还能继续识别后面的文本,一定是哪里的正则表达式自动将上屏的内容格式化截取了,使得自定义的函数………..啊啊啊啊我想改,太费劲了,代码关联太多了

  6. ahkjoo

    猴子模式下, 请问有办法实现 new filename.txt 新建一个输入的文件吗?

    • 麻花藤

      感谢使用。?猴子模式底层使用了 InputHook 特性和 map 数据结构,只适合静态的字典,映射的键(key)必须是不可变的字符串。如果想要拓展猴子输入法,动态创建文件,需要梳理以下问题:1) 在什么程序中创建文件?怎么获取当前相对路径?(创建文件可以用 FileAppend 函数) 2) 猴子模式条件判断分支,增加自定义函数监听键盘输入(此时 ih.Match == filename)。组合起来就可以了。

  7. ahkjoo

    遇到一个问题,猴子输入模式下,请问怎么退格删除前面的字符?

    • ahkjoo

      已经实现了逐个删除字符,但是删除之后要让新的字符追加在后面好像不行吗? input buffer是死的不能更新,除非不用onchar的上屏方式? 按照一个一个字符的方式进行上屏? 柚子输入法和影子输入法好像是使用逐个字符上屏的方式,你可以研究一下

    • 麻花藤

      进入猴子输入法状态时,按 Backspace 删除键,删除字符,像栈结构,只能从右往左删。具体参考 AHK_V2 文档 InputHook ?

  8. 五分钟

    你这个口号,特统领都说好?

  9. ahkjoo

    我已经完全实现了我要的需求, 输入的内容可以进行即使删除和修改.

  10. ahkjoo

    这有一个bug呀, 3热键长按 是有效的,但是,数字3一旦松开,怎么就发送数字1出来了? 这有平时打这个3,就打出来的是31,这个你有遇到过吗?

    • 麻花藤

      1) 我这里测试,单独长按3松开:无输出。短按3松开:数字3。没有多出来数字。2) 我排查 bug 的方法,双击托盘图标 ahk 脚本,按 F5 刷新,重复按需要测试的键位,再按 F5 刷新。然后看日志,脚本执行到代码哪一行会出现多余的数字。?

  11. 小热

    1

  12. 此言

    太强了

  13. 大卫

    分号键怎么打,不能打分号键啊?能切换开关吗?我需要的时候打开,不需要的关掉,这样可以用原生键盘。

    • 麻花藤

      分号键 ; + j = ; 总开关在 CapslockMagic.ahk ,注释掉禁用分号模式。 ; allHotkeys.Push(“*;”)

    • 麻花藤

      中文的分号按下 ; 然后 ffhc 就出来了。这样设计,避开系统输入法大小写影响。

  14. 麻花藤

    分号键 ; + j = ; 总开关在 CapslockMagic.ahk ,注释掉第二行的分号,禁用分号模式。 allHotkeys := [] ; allHotkeys.Push(“*;”) allHotkeys.Push(“*3”) allHotkeys.Push(“*4”)

  15. 大卫

    能把猴子输入法单独拧出来做一个开源软件么?这样可以当跨平台的代码片断管理器用了,然后,来个候选项,类似于vscode的代码提示那样,考虑一下,我觉得猴子输入法完全可以充当这一功能。

  16. 大卫

    猴子输入法是哪个文件,函数入口在哪?我想研究研究,我现在很需要一个代码片断管理功能,跨IDE的。

个人中心
购物车
优惠劵
有新私信 私信列表
搜索