江湖夜雨十年灯

Karabiner 键位修改与配置

李二花 / 2018-05-16


关键词:karabinerkeyboard

Karabiner 是一款修改键位的神器,通常可用用来优化我们的 workflow 是工作流程更加的舒适。

GUI配置键位修改

Karabiner 提供界面键位修改

然后打开 Karabiner-Elements Preferences > Complex Modifications > Rules > Add rule

选择好对应的配置,在 Karabiner 里选择 enable 即可。

配置文件键位修改

除了使用 GUI 来配置与修改我们的 Karabiner 外,我们还可以直接的对他的配置文件进行操作,配置文件的模板可以参考官方网址内的简介。

配置文件地址 ~/.config/karabiner/karabiner.json

配置文件的一个 demo 如下,一般在官网找不到的配置,需要自己在配置文件里处理,我有一个需求就是在使用 spacemacs 时,不想使用 spacemacs 自带的 shell ,所以需要我们使用自己的 shell ,我一般都是使用 iterm2 来操作,因此在两个窗口见进行频繁的切换时无可避免的,我在系统环境下进行了如下的配置来保证使用 option + h 是左屏幕,option + l 是右屏幕。

这里修改好之后,因为 option 键离手指比较远,因此为了方便,我们使用了一个策略来让 option 的使用变得方便。

策略:Change tab to option if pressed with other keys.

也就是当同时按下 tab 键和其他键位的时候,此时 tab 键自动映射为 option 键,这样我的左右小拇指可以轻松的处理这个键位。

使用的 JSON 配置代码如下:这段代码意义是自明性的,所以不做过多的赘述。

{
  "description": "Change tab to option if pressed with other keys. (rev 2)",
  "manipulators": [
	{
	  "type": "basic",
	  "from": {
		"key_code": "tab",
		"modifiers": {
		  "optional": [
			"any"
		  ]
		}
	  },
	  "to": [
		{
		  "key_code": "left_option"
		}
	  ],
	  "to_if_alone": [
		{
		  "key_code": "tab",
		  "hold_down_milliseconds": 500
		}
	  ]
	}
  ]
},

放置的位置在这里:

"profiles": [
    {
        "complex_modifications":{
            "parameters": {},
            "rules":[
                {这里面就是自己的配置内容,包含如上代码所有 description 级别的配置文件集合},
                {并排放置多个不同的配置内容},
            ]
        }
    }
]

一个完整的例子:

"profiles": [
    {
        "complex_modifications":{
            "parameters": {},
            "rules":[
                {
                      "description": "Change tab to option if pressed with other keys",
                      "manipulators": [
                        {
                          "type": "basic",
                          "from": {
                            "key_code": "tab",
                            "modifiers": {
                              "optional": [
                                "any"
                              ]
                            }
                          },
                          "to": [
                            {
                              "key_code": "left_option"
                            }
                          ],
                          "to_if_alone": [
                            {
                              "key_code": "tab",
                              "hold_down_milliseconds": 500
                            }
                          ]
                        }
                      ]
                },
                {并排放置多个不同的配置内容},
            ]
        }
    }
]