如何将终端命令映射到功能键?

我有一个终端命令可以控制我的外部显示器的亮度。我正在尝试将该命令映射到键盘上的一个键,使其像“增加亮度”和“降低亮度”键一样工作。 Karabiner看起来不支持将按键映射到终端命令。
2个回答

我正在使用karabiner-elements在Dell显示器上做这个,你可以将按键绑定到shell命令。
{
"title": "F5 to dim, F6 to bright",
"rules": [
    {
        "manipulators": [
            {
              "description": "dim",
              "type": "basic",
              "from": {
                "key_code": "f5"
              },
              "to": [
                {
                    "shell_command": "/usr/local/bin/ddcctl -d 1 -b 1"
                }
              ]
            },
            {
                "description": "bright",
                "type": "basic",
                "from": {
                  "key_code": "f6"
                },
                "to": [
                  {
                      "shell_command": "/usr/local/bin/ddcctl -d 1 -b 100"
                  }
                ]
              }
          ]
    }
]

}

我已经安装了ddctl,它可以通过传递一个百分比值来控制亮度 - https://github.com/kfix/ddcctl。 你可以查看文档以编写类似这样的复杂修改:https://pqrs.org/osx/karabiner/json.html

你太厉害了,我没意识到我需要给出二进制文件的完整路径,因为它可能不在系统路径中。 - Can Rau

我会使用Automator来运行一个Shell脚本,然后添加一个键盘快捷方式来运行它。 要做到这一点:
  1. 打开 Automator
  2. 按下 commandN(或者转到 文件 > 新建)
  3. 选择服务选项,然后点击 选择 按钮
  4. 确保它设置为在任何应用程序中不接收输入
  5. 在最左边的窗格中选择库 > 实用工具选项
  6. 在中间窗格中双击 运行 Shell 脚本
  7. 现在在右窗格的运行 Shell 脚本窗口中输入终端命令
  8. 按下 commandS(或者转到 文件 > 保存...)
  9. 给服务取一个合适的名称
  10. 点击 保存 按钮
  11. 现在转到 苹果菜单 > 系统偏好设置... > 键盘
  12. 选择 快捷键 选项卡
  13. 在左窗格中选择 服务
  14. 在右侧列表中找到并选择刚创建的服务
  15. 点击 添加快捷键 按钮,并按下您想要使用的键盘快捷键

注意:您需要确保这不是 macOS 已经使用的快捷方式。


Karabiner Elements可以用更少的努力完成相同的工作。类似于{"shell_command": "open -a 'Alfred 3.app'"}这样的操作非常简单,定义一个快捷键只需一瞬间即可完成。 - clemsam lang