Mac 键位映射:解决 Karabiner 在 10.12 sierra 键位替换失效问题

但愿草地干燥,无蚊虫

前两天,无痛升级到 macOS 10.12 Sierra,没感觉太大区别,忽然发现之前修改的键位失效了,没了 Command(Win) 与 Option(Alt) 键位互换,实在难受。

赶紧去 Karabainer官网 查看,只见赫然写着「Karabiner does not work on macOS Sierra at the moment.」,绝望之际,又看到一行「We are developing Karabiner-Elements which provides simple key modification for macOS Sierra at first.」顿时希望重生。

来到项目主页,看到有下载链接,版本似乎每天一更,有需要的同学,还是自己下载最新版吧。https://github.com/tekezo/Karabiner-Elements

用法,官方已经介绍的很清楚了。(尼玛,是今天才更新的吧,我第一次安装好之后,搞了好久都不会用)果然,今天才更新 使用用法

你看右上角的时间

那我来写个简单中文版用法说明。

  1. 下载并安装 Karabiner-Elements (参考上边地址)
  2. 编辑配置文件,参考 官方例子,比如我需要PC键盘映射Mac键盘,打开 pc_keyboard_to_mac….文件,复制json文件的内容
  3. 打开Mac的命令行,输入
vim ~/.karabiner.d/configuration/karabiner.json

创建配置文件。在vim编辑器中,将复制内容粘贴保存即可。(vim使用提示:i 开始编辑,Comond+v 粘贴,:wq 保存退出)

修改配置文件 karabiner.json

大功告成!


当然,如果仅仅想替换 Command 与 Option键位, 系统已经支持了,请注意,要想系统生效,必须删除 Karabiner 软件。

Keyboard-Modifier Keys...

如何绑定「一对多」键位?

2019.10.19 更新,Karabiner 官方已支持复杂键位映射
2017.04.29 更新,感谢 Weslie_6b9d 反馈

使用 complex_modifications 选项实现,Karabiner 官方提供了部分线上规则一键导入功能:Karabiner-Elements complex_modifications rules,如果有合适配置直接 import 。

那么如何手动设置自己的规则?简单!

1. 编辑自己规则 json 文件

可以参考文档或别人的配置文件,比如我想 f10 映射为 Mac 屏幕睡眠快捷键 left_control + left_shift + eject,新建一个 F10ToSleepMoniter.json 文件(名称随意),内容如下:

{
  "title": "F10 to Sleep Monitor",
  "rules": [
    {
      "description": "F10 to Sleep Monitor",
      "manipulators": [
        {
          "from": {
            "key_code": "f10",
            "modifiers": {
              "optional": ["any"]
            }
          },
          "to": [
            {
              "key_code": "eject",
              "modifiers": ["left_control", "left_shift"]
            }
          ],
          "type": "basic"
        }
      ]
    }
  ]
}

2. 放到 complex_modifications 文件夹

配置文件位置在 https://pqrs.org/osx/karabiner/json.html 有说明。

主配置:~/.config/karabiner/karabiner.json
complex_modifications 配置:~/.config/karabiner/assets/complex_modifications

放配置文件

打开 Karabiner / complex_modifications tab

打开 complex_modifications

点击 Enable 即可!


启用配置

此部分已不推荐
如果需要绑定:一个按键 => 多个按键 映射,请在 Karabiner-Elements 下载支持此特性的 fork 版本。
然后在配置文件 ~/.config/karabiner/karabiner.json ,在 one_to_many_mappings 里设置你要的映射,比如我绑定了 delete 键为 mac 中删除的快捷键。

one_to_many_mappings

别忘了给大神的 Git 分支点赞啊,共享如此福利~~

如何查看按键名称?

安装 karabiner - Element 时代了一个 karabiner - EventViewer(图标是查找),

点开后在此软件下点任何你想知道名字的按键即可看到 name

查看按键名称

推荐阅读更多精彩内容