如何以编程方式重新分配 OSX 中的键?

how to programatically reassign keys in OSX?

在 OSX El Capitan 中是否有一种简单的方法可以将一个击键重新映射到另一个击键?

我想将F13分配给⇧⌥⌘4。 (我使用了一个名为 Imgup 的小应用程序,这是上传屏幕截图的按键。)

This answer 建议使用 Keyboard Maestro。但我已经 运行 Karabiner 和 USB Overdrive,所以我对安装更多软件犹豫不决。

我正在查看 Karabiner 中的选项,但我不知道如何简单地将一个按键重新映射到另一个按键,显然 "upload screenshot to Imgur" 不是选择之一,因为它不是系统命令.我也不能使用 "App Shortcuts",因为在 Imgup 中没有用于此操作的菜单项。

是否有一种简单的格式可以在 Karabiner 中编写 XML 片段以允许这样做?是这样的吗?

<item>
<name>F13 to ⇧⌥⌘4</name>
<key><f13>
<definition>4 with Command AND Option and Shift down</definition>
</item>

抱歉我来晚了,但方法如下:

  1. 打开 Automator
  2. 创建类型为 Service
  3. 的新文档
  4. 在右侧窗格的顶部,将 [任何应用程序]
  5. 中的 "Service receives selected [ text ]" 更改为 "Service receives [ no input ]"
  6. 在左窗格中,找到 运行 AppleScript 并将其拖到右窗格中的空白区域
  7. 删除 AppleScript 框中已有的所有内容,然后将其复制并粘贴到:

    on run {input, parameters}
    
        tell application "System Events"
            key code 21 using {command down, option down, shift down}
        end tell
    
        return input
    end run
    
  8. 运行 服务使用 window 右上角的 Play 按钮来确保它做你想做的.

  9. 使用您喜欢的任何标题保存 服务。这将使它可用 system-wide。

    现在是捷径时间。

  10. 打开“系统偏好设置”>“键盘”>“快捷方式”,然后在左侧窗格中select服务

  11. 向下滚动到底部找到您的 newly-created 服务条目,然后通过 select 将单词 none 添加到快捷方式它的权利。在您的情况下,这是您按下键盘上的 F13 键的位置。
  12. 将焦点切换到任何其他应用程序(例如 Finder)并试一试新的快捷方式。
  13. 利润

Karabiner-Elements 11.6.0 将 F13 映射到 ⇧⌥⌘4 在 MacOSX 10.11 El Capitan 及更高版本中

{"title": "Imgup F13 to ⇧⌥⌘4",
 "rules": [
   {"description": "Imgup F13 to ⇧⌥⌘4.",
    "manipulators": [
      {"type": "basic",
       "from": {"key_code": "f13"},
       "to": [{"key_code": "4", "modifiers": ["shift", "option", "command"]}]}]}]}

在类似 ~/.config/karabiner/assets/complex_modifications/imgup.json 的文件中,由 Karabiner-Elements > Window > Karabiner-Elements 首选项 > 复杂修改 > 规则 > 添加规则