Karabiner 在 macOS Sierra 下的解决方案

  • 2016-09-26更新: HHKB支持。
  • 2016-10-04更新: 蓝牙鼠标支持。
  • 2016-10-10 更新: macOS Sierra 兼容软件列表。

今天手贱升级了 macOS Sierra ,进入新系统后发现 Karabiner 不能用了。

Karabiner 用来映射按键,我在 OS X 技巧与软件选择 一文中提到过。对于我这种使用 HHKB 键位的小众人群来说,所有的按键都必须一致,否则效率奇低。使用 Karabiner 把我常用的键盘定义存成 Profile 就行了。

Karabiner

但由于 macOS Sierra 大幅修改了鼠标和键盘驱动,导致 Karabiner 在该系统下无法工作。我定义的所有 Profile 都失效了。

Karabiner 作者也在官网提到了:

macOS Sierra support status

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. (Karabiner-Elements works on macOS Sierra except prefernces GUI.)

We'll start updating for the full featured Karabiner for Sierra after Karabiner-Elements is completed.

https://github.com/tekezo/Karabiner-Elements

目前 Karabiner-Elements 还没有较好的 GUI 界面,需要直接修改配置文件。

因为这是个不完善的版本,使用方法随时可能修改,我就不写使用方法说明了,直接看文档:

https://github.com/tekezo/Karabiner-Elements/blob/master/usage/README.md

贴上我的配置文件:

 1{
 2    "profiles":[
 3        {
 4            "name":"Internal",
 5            "selected":true,
 6            "simple_modifications":{
 7                "backslash":"delete_or_backspace",
 8                "delete_or_backspace":"backslash"
 9            }
10        },
11        {
12            "name":"HHKB",
13            "selected":false,
14            "simple_modifications":{
15            }
16        }
17    ]
18}

我的配置文件中,Internal 配置(MBP 内置键盘)中,把删除键和反斜杠按键进行了调换。因为我常用键盘是 HHKB Pro2 ,这样切换是为了保证键位和 HHKB 一致。

注意删除键的名称并不是 delete ,而是 delete_or_backspace 。这个在官方给出的文档中也是错的。

反斜杠按键的名称是 backslash

更多的按键名称可以看源码 types.hpp

我的配置文件中,HHKB 这个配置中什么都没有填写,是为了还原原始的配置。如果两个配置的 selected 值都为 true,则会以最上面的一个为准(因为最先碰到这个 true)。

悲催的是,当我打开 Karabiner-Elements 之后,按键切换是正常了,但蓝牙鼠标立马不能用了。

希望我的 HHKB 还能用……明天去公司试试。

2016-09-26 更新:

在开启和关闭 Karabiner-Elements 时,HHKB Pro2 一切如常。Apple Magic Trackpad 也一切正常。看来只有蓝牙鼠标有问题了。目前的解决方案只能是:在使用 Karabiner-Elements 的时候,放弃使用蓝牙鼠标。

2016-10-04 更新:

升级到 0.90.46 版本之后,Karabiner-Elements 已经不会影响我的蓝牙鼠标的使用。如果已经连接了鼠标,开启 Karabiner-Elements 之后鼠标失效,那么可以关闭鼠标然后重新开启,鼠标再次生效后就可使用了。

但我又发现了另一个问题,在开启 Karabiner-Elements 之后,操作系统中映射的“修饰键”无效了。例如,我习惯把 Caps Lock 键映射成为 Control 键,但开启 Karabiner-Elements 之后,Caps Lock 按键上的指示灯又会亮起,功能还原了。即使我在 Bluetooth Mouse 中再次进行映射也无济于事(如下图)。

Caps Lock

解决这种情况,需要在配置文件中加入一行映射:

1            "simple_modifications":{
2                "backslash":"delete_or_backspace",
3                "delete_or_backspace":"backslash",
4                "caps_lock":"left_control"
5            }

2016-10-10 更新:

P.S. 从这段时间的使用看来,并不是仅有 Karabiner 不能使用。在我的机器上, MplayerX 和 GIMP 都不能使用了。这里有一个列表,显示 macOS Sierra 的软件兼容情况: macOS Sierra 10.12: Compatible Apps

(全文完)