macOS上HHKB配列Control键完美方案

2024 年 5 月 13 日 星期一(已编辑)
10

在macOS系统上,Control键在保证原有功能不受影响前提下,同时实现Caps Lock原有短按切换中英文、长按锁定大小写功能。

前言

最近入手了一把Keychron Q60Max键盘,HHKB配列,也在过渡熟悉键位过程中。对比其他配列键盘,Caps Lock位置替换为了Control键,不得不说一些操作变的非常顺手,在macOS上配合Emacs的快捷键,可以做到系统全局中能够输入文字的地方都能方便的进行光标移动,基本可以做到在码字的时候双手不离开键盘。但就是这样的改动带来了一连串的连锁反应:

Keychron Q60Max

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改键

VIA改键

具体VIA改键步骤:连接上键盘后,选中该键位,点击SPECIAL -> 点击Any -> 在弹出框中输入MT(MOD_LCTL, KC_CAPS) -> 保存即可。

第二步:

系统中在输入法设置中启用Caps Lock切换中英文,如下图所示。

macOS系统设置

macOS系统设置

写在最后

以上两步设置完,可以愉快地实现HHKB中的Control键位和macOS中的Caps Lock短按切换中英文、长按锁定大小写功能的完美融合,并且键位和之前的习惯完全相同,没有任何负担,并且规避了一些系统级切换输入法的隐藏bug。

另外,需要提到一点,我在测试Keychron Q60Max的时候,Cable有线连接存在bug,短按该键位,系统识别到的是长按Caps Lock,即短按也变成了锁定大小写。而2.4G和蓝牙模式是正常触发Caps Lock短按切换中英文效果的。不知道是固件bug还是系统bug,就先这样吧,反正我平时除了充电,基本都是无线连接。

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...