概要
单按 Fn 是 Escape 组合时 Fn 还是 Fn 单按 CapsLock 还是 CapsLock, 组合时 CapsLock + g 等于 Ctrl + Option + Command + g 配合 Hammerspoon 可以实现 CapsLock + g 打开指定 App ---- CapsLock -> Hyper Fn -> Escape Fn + h -> 左 Fn + j -> 下 Fn + k -> 上 Fn + l -> 右 Fn + u -> page up Fn + d -> page down
用法
把 fn-capslock-enhancement.json 放到 ~/.config/karabiner/assets/complex_modifications/ 。
fn-capslock-enhancement.json 代码
{
"title": "Fn/CapsLock Enhancement",
"rules": [
{
"description": "Held CapsLock to Hyper",
"manipulators": [
{
"from": {
"key_code": "caps_lock",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "right_control",
"modifiers": ["right_command", "right_option", "right_shift"]
}
],
"to_if_alone": {
"hold_down_milliseconds": 100,
"key_code": "caps_lock"
},
"type": "basic"
}
]
},
{
"description": "Alone Fn to Escape",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "fn",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "fn",
"lazy": true
}
],
"to_if_alone": [
{
"key_code": "escape"
}
]
}
]
},
{
"description": "Fn + h/j/k/l to arrows",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "h",
"modifiers": {
"mandatory": ["fn"],
"optional": ["any"]
}
},
"to": [
{
"key_code": "left_arrow"
}
]
},
{
"type": "basic",
"from": {
"key_code": "j",
"modifiers": {
"mandatory": ["fn"],
"optional": ["any"]
}
},
"to": [
{
"key_code": "down_arrow"
}
]
},
{
"type": "basic",
"from": {
"key_code": "k",
"modifiers": {
"mandatory": ["fn"],
"optional": ["any"]
}
},
"to": [
{
"key_code": "up_arrow"
}
]
},
{
"type": "basic",
"from": {
"key_code": "l",
"modifiers": {
"mandatory": ["fn"],
"optional": ["any"]
}
},
"to": [
{
"key_code": "right_arrow"
}
]
}
]
},
{
"description": "Fn + u/d to page scroll",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "u",
"modifiers": {
"mandatory": ["fn"],
"optional": ["any"]
}
},
"to": [
{
"key_code": "page_up"
}
]
},
{
"type": "basic",
"from": {
"key_code": "d",
"modifiers": {
"mandatory": ["fn"],
"optional": ["any"]
}
},
"to": [
{
"key_code": "page_down"
}
]
}
]
}
]
}
到 Karabiner-Elements 中启用这些规则
规则在 complex_modifications 标签页中。
~/.hammerspoon/init.lua
-- 打开 Finder
hs.hotkey.bind(
{'cmd'},
'e',
function()
hs.execute('open ~')
end
)
-- 打开常用工具
apps = {
{key = 'A', app = '/Applications/Affinity Photo.app'},
{key = 'C', app = '/Applications/Utilities/Digital Color Meter.app'},
{key = 'D', app = '/Applications/TablePlus.app'},
{key = 'F', app = '/Applications/Fork.app'},
{key = 'G', app = '/Applications/Google Chrome.app'},
{key = 'M', app = '/Applications/Utilities/Activity Monitor.app'},
{key = 'Q', app = '/Applications/QQ.app'},
{key = 'S', app = '/Applications/Seafile Client.app'},
{key = 'T', app = '/Applications/Utilities/Terminal.app'},
{key = 'V', app = '/Applications/Visual Studio Code.app'},
{key = 'X', app = '/Applications/Xcode.app'}
}
hs.fnutils.each(
apps,
function(entry)
hs.hotkey.bind(
{'ctrl', 'alt', 'cmd'},
entry.key,
nil,
function()
hs.application.launchOrFocus(entry.app)
end
)
end
)
— 完 —