前情提要

悄咪咪吹一波阿米洛花旦娘,真的是太好看了叭,吹爆!!!

vamilo

上一把键盘是 IKBC 的 Poker,习惯了68键布局,各种快捷键按起来也是噼里啪啦,超有感觉。

看中68键也是因为紧凑布局,打起字来手基本就不用动了,动动手指就行。

然鹅阿米洛不支持可编程,比较遗憾,想着能不能在软件层面改一改键,继承之前 Poker 的键位设置。

于是就找到了 Karabiner Elements 这个改键神器。

Karabiner Elements

Karabiner Elements 」 是 macOS 上一款强大的改键软件,从简单的单键映射,到复杂的组合键映射全部都有,还可以自己定义映射规则,灵活性很高,然后还免费!

完美符合我的需求有木有!

先介绍下我之前的键位设置。

最大的变化是将 CAPSLOCK 键改成了 Fn 键,然后以此为基础新加了许多 Fn + X 形式的组合键。

感觉 CAPSLOCK 不是很常用,就把它换成常用的功能键 Fn了。CAPSLOCK 则变成了 Fn + /

key boundings

之后就是方向键 ⬆️ ⬇️ ⬅️ ➡️ 和编程常用的 ~ 和 ` 键了。

如果熟悉 vim 键位的话,可以把方向键绑到 H,J,K,L 键位上,即 Fn + H / J / K / L。

阿米洛默认是 Win 布局,对于 macOS 用户,可以交换 Win 和 ALT 键,正好就和 MacBook 上的 Option 和 Command 键对应了。

还有几个比较方便编程的快捷键,比如说光标的快速移动

  • 光标移动到行首:Fn + M
  • 光标移动到行尾:Fn + .
  • 光标向前跳过一个单词:Fn + F
  • 光标回退一个单词:Fn + B

最后就是 PageUp 和 PageDown 的设置了。

varmilo2

改键步骤

设计好自己习惯的快捷键后,就可以用 Karabiner Elements 进行改键了。

开整前照例先看看官方 doc

Karabiner 的安装和简单键的映射修改,可以参考这篇博文 「Karabiner Elements 安装及简单按键映射」。

因为我们自定义快捷键要改的键有点多,就直接选择 Use more complex rules

在步骤 Step1 里,如果你有看到合适的 rules,可以直接从云端导入别人写好的。

不过我们身为程序员,当然是选择自己造轮子啦。

配置文件

把Karabiner 的自定义配置文件 custom.json 放在 ~/.config/karabiner/assets/complex_modifications/文件夹下,Karabiner 会自动加载这些自定义配置。

custom.json 的数据结构

Karabiner 采用 json格式储存键位配置,大致的 数据结构 如下

{
    "title": "Title for the list of rules/complex modifications."
    "rules": [
        {
            "description": "This description is shown in Preferences.",
            "manipulators": [
                {
                    "type": "basic",

                    "from": from event definition,

                    "to": [
                        to event definition,
                        to event definition,
                        ...
                    ]
                },
                {
                    "type": "basic",
                    ...
                },
                ...
            ]
        },
        {
            "description": "...",
            "manipulators": [
                ...
            ]
        },
        ...
    ]
}

编写 varmilo.json

如何知道某个按键对应的 key_code 呢?

Karabiner Elements 提供另一个app,「 Karabiner EventViewer 」,通过它我们可以看到每一个按键对应的 key_code。

终于可以开始写阿米洛的快捷键配置了。

举个例子吧,将 CapsLock 键重新定义为 Fn 键

在 Karabiner EventViewer 中找到 CapsLock 和 Fn 的 key_code,caps_lock 和 fn,填入之前的数据结构中。

{
  "description": "Change CapsLock to Fn",
  "manipulators": [
    {
      "type": "basic",

      "from": {
        "key_code": "caps_lock"
      },

      "to": [
        {
          "key_code": "fn"
        }
      ]
    }
  ]
},

是不是很简单!

再举个例子吧,将 Fn -> H 重新定义为 左箭头 ⬅️

如何表示组合键呢?

我们要在 json 里加上 modifiers,表示对基础键的修饰。

mandatory 表示必须与基础键一起出现的键,这里是 Fn。

{
  "description": "Change Fn-HJKL to Arrow left,down,up,right",
  "manipulators": [
    {
      "type": "basic",

      "from": {
        "key_code": "h",            // 基础键
        "modifiers": {
          "mandatory": ["fn"],      // 组合键
          "optional": [
            "caps_lock",
            "option",
            "command",
            "shift",
            "control"
          ]
        }
      },

      "to": [
        {
          "key_code": "left_arrow"
        }
      ]
    },
    ...
  ]
}

加载自定义快捷键

当我们写好了所有规则后,保存 custom.json 到 ~/.config/karabiner/assets/complex_modifications/ 文件夹下,打开 Karabiner Elements。

选择 Complex modifications,点击 Add rule。

这时我们就能看到 Karabiner 已经自动加载我们刚刚写好的所有键位设置了。

就可以开始愉快地写码 打游戏 了。

最后

如果有小伙伴需要阿然君的键位配置,在这里 拿走不谢。

如果有帮到你,就不要脸地求个 Star。

最后,阿米洛真香!静电容真香!