最近更换了电脑,从windows向macos迁移,第一件麻烦事就是把windows上的键盘映射迁移过来,windows上用的软件是Autohotkey,mac不支持,于是查询后选择使用karabiner完成映射,折腾了一天终于搞出来了,在此记录一下。
karabiner是mac上的一款键盘映射软件,支持单对单,多对单,多对多各种映射,我的方案是将capslock+jkli分别对应左下右上小键盘,capslock+uoh分别对应home和end和backspace,同时输入法切换设置为shift切换。
karabiner的复杂指令complex modification能够满足我的要求,在一番折腾后终于完成了配置(需要特别说明的是由于home和end键在跳至行头行尾的同时会导致页面发生滚动,所以我讲capslock+U映射到了ctrl+A,capslock+O映射到了ctrl+E,这样就能无副作用的挪到行首部和行尾了)
下面开始介绍流程
1. 先安装karabiner(这个不会还是自己百度吧)
2. 安装完成后打开karabiner-elemenets,进入复杂修改页面
3. 创建一个1.json文件,把下面的代码复制进去
{
"title": "`Use CAPS LOCK for vi navigation",
"rules": [{
"description": "CAPS LOCK + jkliuoh to arrow keys",
"manipulators": [{
"type": "basic",
"from": {
"key_code": "k",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [{
"key_code": "down_arrow"
}],
"conditions": [{
"type": "variable_if",
"name": "caps_lock pressed",
"value": 1
}]
}, {
"type": "basic",
"from": {
"key_code": "i",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [{
"key_code": "up_arrow"
}],
"conditions": [{
"type": "variable_if",
"name": "caps_lock pressed",
"value": 1
}]
}, {
"type": "basic",
"from": {
"key_code": "j",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [{
"key_code": "left_arrow"
}],
"conditions": [{
"type": "variable_if",
"name": "caps_lock pressed",
"value": 1
}]
}, {
"type": "basic",
"from": {
"key_code": "l",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [{
"key_code": "right_arrow"
}],
"conditions": [{
"type": "variable_if",
"name": "caps_lock pressed",
"value": 1
}]
},{
"type": "basic",
"from": {
"key_code": "u",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [{
"key_code": "a",
"modifiers": ["left_control"]
}],
"conditions": [{
"type": "variable_if",
"name": "caps_lock pressed",
"value": 1
}]
},{
"type": "basic",
"from": {
"key_code": "o",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [{
"key_code": "e",
"modifiers": ["left_control"]
}],
"conditions": [{
"type": "variable_if",
"name": "caps_lock pressed",
"value": 1
}]
},{
"type": "basic",
"from": {
"key_code": "h",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [{
"key_code": "delete_or_backspace"
}],
"conditions": [{
"type": "variable_if",
"name": "caps_lock pressed",
"value": 1
}]
},
{
"type": "basic",
"from": {
"key_code": "caps_lock",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [{
"set_variable": {
"name": "caps_lock pressed",
"value": 1
}
}],
"to_after_key_up": [{
"set_variable": {
"name": "caps_lock pressed",
"value": 0
}
}]
}]
}]
}
4. 然后将json文件复制到该地址
~/.config/karabiner/assets/complex_modifications/
5. 这时候点击Karabinerl里的Add rule,选中capslock下的那条点击enable即可,名称应该是CAPS LOCK + jkliuoh to arrow keys
到这就完成配置了,改完后coding效率上去了一个量级,然后shift切换中英文其实只要下一个搜狗输入法改一下就行,就不写映射了。