# 让 macOS 一键进入全键盘模式：围绕 Homerow 的实践

> 本文公开全文。

原文：https://utgd.net/article/20852

本文将介绍：

- macOS上的全键盘控制软件Homerow，以及一键启动Homerow两个核心功能，从而让Mac进入“全键盘模式”的方案。

- 上述方案所采用的两个可迁移的通用技巧。 通用技巧1：用Karabiner\-Elements实现某一按键与其他按键同时按下时为修饰键，单独按下时实现特定功能。 通用技巧2：用Keyboard Maestro的 tapped n times Trigger 实现同一按键点击不同次数触发不同功能。

## Homerow及其功能唤醒方案

近期有朋友在论坛讨论macOS下的全键盘控制方案，在讨论中Minja推荐的软件Homerow解决了全键盘控制的部分痛点。下载体验后，Homerow迅速成为我的Mac上系统级的核心应用，我使用的主要的功能有： 1\. 模拟点击：用键盘实现模拟鼠标点击屏幕上的特定元素； 2\. 模拟滚动：用键盘实现在选中的特定区域模拟鼠标滚轮滚动。

更多介绍及下载链接，可见官网：Homerow — Keyboard shortcuts for every button in macOS。Homerow虽然是一个付费软件，但免费版提供的功能已经足够完善，每唤醒50次弹出的付费提示也近乎无感。如果你愿意付费，开发者承诺“一次付费，完全拥有，直到宇宙热寂”（"Homerow is a one\-time purchase\. You own it completely, 'til the heat death of the universe\."），可以算是很良心了~~（除了50刀的价格）~~。

想要实现全键盘控制，换言之即尽可能用键盘代替鼠标，至少要求——在轻度鼠标需求的场景下，如看网页时滚动页面、在谷歌搜索结果页跳转搜索结果链接——使用键盘的效率不能低于原来使用鼠标的效率，所以必然要为Homerow的功能唤起设置一枚方便的按键。

模拟点击功能，官方默认配置的快捷键是⌘\+⇧\+Space，不能说不科学。但在我的设备上，该按键已经被占用，且需要三个键同时按下，相对还是不够方便。因此我决定将短按Caps Lock设置为唤起该功能的按键。

模拟滚动功能，官方默认配置的快捷键是⌘\+⇧\+J，但同样是组合键，面临不够方便的问题。因此我考虑短按两次Caps Lock唤起该功能。

## 短按Caps Lock一次唤起模拟点击

> 通用技巧1：用Karabiner\-Elements实现某一按键与其他按键同时按下时为修饰键，单独按下时实现特定功能。

借鉴Hum的文章征服macOS 快捷键（三）——修饰键的分层和原则中Hyper和小Hyper键的定义，我用Karabiner\-Elements将长按Caps Lock映射为⌃\+⌥\+⇧，我将其称为Super键。

而Karabiner\-Elements其实还支持分别定义一枚按键"与其他键同时按下时"和"单独按下时"的功能。因此，可以设置将单独按下Caps Lock映射为一个实体键盘上并不存在的按键，并将这个按键设置为Homerow模拟点击功能的唤醒键。具体步骤如下：

第一步，在Karabiner\-Elements中设置改键规则。依次点击 Complex Modifications \- Add your own rule，在弹出的代码框中删除默认代码，粘贴我给出的代码后点击保存。

```
{
    "description": "Change caps_lock. Hold to Super (⌃+⌥+⇧), tap to f19",
    "manipulators": [
        {
            "from": {
                "key_code": "caps_lock",
                "modifiers": {
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "left_shift",
                    "lazy": true,
                    "modifiers": [
                        "left_control",
                        "left_option"
                    ]
                }
            ],
            "to_if_alone": [
                {
                    "key_code": "f19"
                }
            ],
            "type": "basic"
        }
    ]
}
```

以上代码的功能是将Caps Lock键与其他按键同时按下时设置为Super键⌃\+⌥\+⇧，单独按下时设置为f19。代码中"from""to""to\_if\_alone"的表述非常容易理解，你也可以根据你自己的偏好另行设置（如使用Shift而不是Caps Lock作为触发键，或修改Caps Lock作为修饰键时映射的组合键）。想要更高级的设置，可以参考官方文档：Documentation \| Karabiner\-Elements。

第二步，打开Karabiner\-EventViewer（默认与Karabiner\-Elements一同安装）。分别测试Caps Lock单独按下、与其他按键同时按下时的键盘事件，确定上一步设置成功。

第三步，打开Homerow的设置界面。由于唤起模拟点击的快捷键为f19（键盘上实际按下的是Caps Lock），为便于记忆和使用，我把Homerow的搜索可点击元素功能唤起按键设置为Super\+F（键盘上实际按下的是‌Caps Lock\+F）。先设置Clicking的Search Shortcut，再设置Shortcut。

至此设置完成，此时你点击Caps Lock，可以唤起Homerow的模拟点击功能，屏幕上会出现很多标有字母的小标签，输入小标签对应的字母组合即可实现模拟点击屏幕上的元素。

## 短按Caps Lock两次唤起模拟滚动

> 通用技巧2：用Keyboard Maestro的 tapped n times Trigger 实现同一按键点击不同次数触发不同功能。

Homerow为模拟滚动功能默认设置的⇧\+⌘\+J按键，在键位设计上已经比较合理，因为⇧\+⌘是左手非常自然的放置位置，而J键作为Vim风格方向键的下键，使用频率最高。但完成上一节的设置后，为追求逻辑的连贯性，将短按Caps Lock两次作为唤起模拟滚动的方案更为合理，且该方案的按键负担更小。

要完成以上设置，仅需设置一个全局的Keyboard Maestro动作：

如果你的⇧\+⌘\+J快捷键被占用，还可以在Homerow的"Scroll"设置项下与Keyboard Maestro Macro的Action中同时修改快捷键。

## 小结

模拟鼠标控制，可以算是一项系统级的功能。将全局性的Super键（以Caps Lock实现）作为其触发的快捷键，恰如其分。

然而，展示个人需求与个人方案终究面临众口难调问题。所幸本文所展示的两种通用技巧之组合不局限于Homerow，可以轻松迁移到其他应用场景中去，在不影响原修饰键功能的前提下拓展出一批新按键，为诸如唤起AI之类的“一键”需求凿通道路。

---

[前往标准阅读页](https://utgd.net/article/20852?audience=web)
