macOS上HHKB配列Control键完美方案
在macOS系统上,Control键在保证原有功能不受影响前提下,同时实现Caps Lock原有短按切换中英文、长按锁定大小写功能。
前言
最近入手了一把Keychron Q60Max键盘,HHKB配列,也在过渡熟悉键位过程中。对比其他配列键盘,Caps Lock位置替换为了Control键,不得不说一些操作变的非常顺手,在macOS上配合Emacs的快捷键,可以做到系统全局中能够输入文字的地方都能方便的进行光标移动,基本可以做到在码字的时候双手不离开键盘。但就是这样的改动带来了一连串的连锁反应:
![Keychron Q60Max](https://swroom.com:2333/api/v2/objects/file/hygaaeza43yc9rayw2.jpg)
Keychron Q60Max
问题 1:
由于Caps Lock键的缺失,之前在macOS上非常顺手的短按切换中英文的方式,将不得不变成Control + Space组合键的方式。不是我不能自适应组合键切换中英文,而是用过macOS的就知道,由于这个组合键系统还兼容了短按和长按功能,所以这个组合键切换输入法其实并不是很流畅,短按有时会失败。因此我迫切希望依旧用单按键来实现中英文切换。我的替换方式是将每个中文输入法中的中英文切换快捷键设置成Control键,这样就实现了不切换输入法,而只在当前输入法中切换中英文。
问题 2:
这种方式在码字的时候问题不大,但是在使用Nvim的时候,又出现了bug。为了减少在nvim中切换Normal / Insert / Command等模式时需要手动调整中英文,我下载了im-select插件,但在使用该插件时,却又出现了新的bug,即在切换回Insert模式时,无法正常的切换出中文来。详细情况参见:https://github.com/keaising/im-select.nvim/issues/27。 因此我就把进入Insert模式切换回原输入法功能关闭了。这就导致回去输入中文的时候,必须从ABC状态下按Control+ Space组合键呼出中文。还是让中英文切换需要按组合键才行。
在ZF闲逛的时候,发现了这篇帖子https://www.zfrontier.com/app/flow/LVB7ZMVXZXGw ,对我启发甚大,虽然我的需求不同于楼主的esc和切层,而是尽量保证原HHKB键位不变动的情况下,同时用一个非常顺手的单键位实现中英文切换。因此,接下来我将介绍一下我的解决办法。
适用于
- macOS系统
- HHKB配列键盘,支持VIA改键
- 保证原键位功能不变,即Control功能不影响,还要做到Caps Lock原有短按切换中英文、长按锁定大小写功能。
解决方案
第一步:
其实,很简单,原理就是利用VIA的Any键功能,实现一个键位上绑定短按Caps Lock,长按Control功能。这样可行的原因是Control按键本身就是用于组合键,而一般情况下都是按键时长超过200ms的,完全可以只在长按时触发Control键的。
![VIA改键](https://swroom.com:2333/api/v2/objects/file/t5ed87br40dzwfv6u0.png)
VIA改键
具体VIA改键步骤:连接上键盘后,选中该键位,点击SPECIAL -> 点击Any -> 在弹出框中输入MT(MOD_LCTL, KC_CAPS)
-> 保存即可。
第二步:
系统中在输入法设置中启用Caps Lock切换中英文,如下图所示。
![macOS系统设置](https://swroom.com:2333/api/v2/objects/file/he2hlrnuf8hbnydm9n.png)
macOS系统设置
写在最后
以上两步设置完,可以愉快地实现HHKB中的Control键位和macOS中的Caps Lock短按切换中英文、长按锁定大小写功能的完美融合,并且键位和之前的习惯完全相同,没有任何负担,并且规避了一些系统级切换输入法的隐藏bug。
另外,需要提到一点,我在测试Keychron Q60Max的时候,Cable有线连接存在bug,短按该键位,系统识别到的是长按Caps Lock,即短按也变成了锁定大小写。而2.4G和蓝牙模式是正常触发Caps Lock短按切换中英文效果的。不知道是固件bug还是系统bug,就先这样吧,反正我平时除了充电,基本都是无线连接。