在《键位改造》中我们曾经介绍过调整 Caps Lock 转为 Hyper Key 的用法,你可以将其视为继 Command 之后第二个功能强大的修饰键。但这次更新的 macOS Sierra 并不支持 Karabiner 和 Seil,所以 Hyper Key 就无法正常工作,不过最近网上一篇文章引起了小编的注意,作者利用 Karabiner-Elements 和 Keyboard Maestro 实现了与 Hyper Key 同样的应用效果,所以就在这和大家分享一下这个小窍门的具体细节。
由于当前版本的 Karabiner 还不支持 macOS Sierra,所以开发者加急赶制了一个名为 Karabiner-Elements 的程序包,可以帮助用户提供简单的改建功能,需要自己建立一个 .json 文件才行。目前 Karabiner-Elements 还在不断完善,等做完之后,全功能的 Karabiner for Sierra 才能开发,看来正式版的 Karabiner 还有很长的一段时间才能与我们见面啊。
临时的解决方案设计原理就是利用 Karabiner-Elements 先把 Caps Lock 转为一个虚拟的按键(就像 Hyper Key 里的 F18 和 F19),然后再到 Keyboard Maestro 建立 marco,通过 Hot Key Trigger 和 KM 特有的 shortcut key 实现与 Hyper Key 一样的工作效果。来看具体步骤:
设置 karabiner.json 文件
安装 Karabiner-Elements 后我们需要在 Finder 里打开目录:“~/.karabiner.d/configuration/” 在里面新建一个 karabiner.json,然后加入以下内容:
{ “profiles”: [ { “name”: “Default profile”, “selected”: true, “simple_modifications”: { “caps_lock”: “f18” } } ] }
保存后重新启动 Karabiner-Elements,此时你的 Caps Lock 又变为一个不存在的 F18 了。
接着启动 Keyboard Maestro,新建一个 Hyper Key Group,然后针对你的需求建立多个 macros,在 trigger 上选择 This hot key,然后按下(is pressed)Caps Lock 键,此时 F18 显示在输入框内;然后在 following action 里选择 activate last application,选择你需要激活的应用程序,最后在 macro 名称内以 [X]: [MacroName]
的格式命名,这是 Keyboard Maestro 的特殊命名方式,比如你输入:“0:safari” 后,每次按下 F18,紧接着按下 0 这个数字键,safari 浏览器就会自动启动。
同样道理,以此类推,你可以在一个 group 里建立多个 marco,逐一对各个键进行映射,然后每次按下 F18 就会弹出一个 Conflict Palette,不过目前这个小伎俩还无法涉及到 Tab 与 Delete 这个两个键。
以下就是一个 F18 的 Conflict Palette,看上去是不是和 Hyper Key 相差无几?
原文教程:《Hyper Key hack in MacOS 10.12 Sierra using Karabiner-Elements and Keyboard Maestro》