对 HHKB 本身的布局已经很满意,没有调整的必要,不过在功能上有些许不足,如不能一键切换中英文输入法、使用方向键时容易误按等。准备借由 Karabiner Elements 实现一键切换中英文输入法、增加 Hyper 键及实现全局 Vi 模式。
键盘上的按键可分为两种类型,一种是 字符键,触发某种特定行为,如 ABC
、123
、Delete
等;另一种是 修饰键,按住时会改变其它键的行为,但自身并无任何功能,如 Shift
、Ctrl
等。默认键盘上字符键由短按实现,长按无行为或重复触发;而修饰键由长按实现,短按无作用。
我想做的便是给原字符键赋予修饰键作用,给原修饰键增加字符键功能。这种按键类型叫做 Dual-Role-Keys,直译过来就是双功能键:一个键即是字符键,也是修饰键。像在 MacBook Pro 中,可以开启按 Caps_Lock
键切换中英文输入法,而长按时切换大小写。
实现功能
left_Shift
:单按时,为Caps_Lock
空格键
:长按时,为 Hyper 键Tab 键
:长按时,为 Vi Mode 触发键
配置
安装
- 在终端输入
brew cask install karabiner-elements
安装 - 或从 GitHub 下载安装
关于配置文件
- Karabiner 的配置文件在
~/.config/karabiner/karabiner.json
- 每个配置文件里面可以存在多个配置
- 每个配置里面分为
complex_modifications
simple_modifications
为 Left_Shift
增加 Caps_Lock
功能
实现短按 Left_Shift
时,切换中英文输入法;长按 Left_Shift
时功能不变。
这里可以手动输入,也可以用自带的规则 Change spacebar to left_shift.(Post spacebar if pressed alone)
更改。
为空格键
增加 Hyper
功能
实现长按空格键
时,为Left_Control + Left_Command + Left_Option
集合的 Hyper
键;短按功能不变。
在 Karabiner-Elements 自带的规则中有一条 Change caps_lock to command+control+option+shift.
在上面新增一部分即可。另,我这里的 Hyper
没把 Left_Shift
算进去,这样当空格键 + Shift 键就成了 Hypers
又多了一个超级键。
设 Tab
键为 Vi Mode 触发键
以 Tab
键作为 Vi Mode 的触发键,实现 Vi 的部分功能,如用 HJKL
做方向键。
载入 Vi Mode(rev 4.2) 规则,完成后启用 Vi Mode[S as Trigger Key]
,然后打开配置文件把所有 "key_code": "s"
中的 s
替换成需要的按键即可。当然也可以不替换直接使用。
移动模式
按键 | 功能 |
---|---|
触发键 + H / J / K / L | 方向键 |
触发键 + F | FN 功能 |
触发键 + F + H / J / K / L | Home / Page Down / Page Up / End |
触发键 + 0 / 4 | 行尾 / 行首 |
可视模式
按键 | 功能 |
---|---|
触发键 + V + H / J / K / L | 按字符选择文本 |
触发键 + V + B / W | 按单词选择文本 |
触发键 + V + 0 / 4 | 选择到行尾 / 行首 |
参考
注
题图为修改后,原配置图参考另一篇:macOS 养成计划之外接 HHKB 键盘设置备忘
附件
- Karabiner-Elements:GitHub
版本
- macOS Sierra 10.12.6
- Karabiner-Elements 0.91.13