跳转到主要内容

App 规则

让某个键在特定 App 中执行不同的动作,按前台 App 的精确 Bundle ID 匹配。

App 规则让一个键在特定 App 位于前台时执行不同的动作,而不影响它在其他地方的行为。

规则如何匹配

每条映射都有一个「默认动作」,并可以带一组「App 规则」。按下组合键时,Capslock 用前台 App 自上而下地检查这些规则,第一条包含该 App 的规则生效;如果都不匹配,就执行默认动作。

App 以精确的 Bundle ID 识别,例如 com.apple.Safari。即使 App 被移动或改名,规则依然有效,也绝不会误匹配名称相近的其他 App。

添加规则

从某个键开始:

  1. 在「键盘」页点按该键,再点「编辑…」。
  2. 在「App 规则」下点击「添加 App 规则」。
  3. 在「适用于」下点击「添加 App」,选择一个或多个 App。
  4. 选择在这些 App 中执行的动作,然后保存。

也可以在「App 规则」页点击「添加规则…」,选好 App 后,映射编辑器会自动填入该 App。如果 App 尚未安装,可以直接输入它的 Bundle ID,而不用浏览选择。

用规则旁的箭头调整顺序。每条规则至少要包含一个 App。

「App 规则」页

「App 规则」页列出所有设置了规则的 App,标出其中未安装的,并显示每条规则。在某个 App 的菜单中,可以为它再添加规则,或「移除全部规则」。移除某个 App 的全部规则是一次修改:会先备份,并且可以撤销。

在配置文件中

规则是映射上的一条 bindings。下面这条让 ⇪ N 在其他地方照旧用 ⌥⌫ 删除前一个词, 但在终端和 iTerm 中改为发送 Shell 习惯的 ⌃W:

- trigger:
    kind: hyper_plus_key
    key: 78            # N
    plane: 0           # Base
  action:
    kind: key_combo
    target_key: 8      # Backspace
    with_alt: true
  bindings:
  - when:
    - type: frontmost_app
      include:
      - com.apple.Terminal
      - com.googlecode.iterm2
    action:
      kind: key_combo
      target_key: 87   # W
      with_ctrl: true

编辑器无法显示的规则会标为「高级规则(在 YAML 中编辑)」,并原样保留。见配置文件。