自上一篇HHKB 改造记:更换蓝牙控制器 立 Flag 准备单独一篇谈谈按键之后,至今已过去半年多,草稿中都躺了三四篇相关文章,却始终没有想要写的欲望。不过最近,有了一个新想法,所以准备先从按键谈起,顺便完成这个 Flag。

按键的类型

键盘自上世纪作为计算机的输入设备以来,其外观和功能虽然不断变化,但按键的类型大致可以分为两类:一类是功能键,基本涵盖了 80% 以上的按键,比如字母键、数字键、Delete、ESC 等均可归为这一类,共同点是按下松开按键之后,会执行特定功能;另一类是修饰键,按住之后会改变其它按键的默认功能,但独按时没有任何效果。

此外还有一类较为特殊,似前两类的结合体:按下松开之后触发,然后会持续的改变其它按键的功能,直到再次按下相同按键才会恢复。当然,如你所知,指的自然是 Caps Lock 和 Number Lock 这类按键,这里暂称为状态键。

按键的操作

讲完了按键的类型,接下来谈谈按键的操作。在《人本界面》中,作者 Jef Raskin按下和松开一个按键或开关的过程,期间没有任何其它的动作定义为敲击(Tap)。但在中文语境中,敲击并不是一个惯用词,所以在这里用来表示,并把这过程称为短按

按下,松开

短按应该是键盘中最常用的操作,前文所指的功能键均由短按触发。但是,所有的修饰键默认短按是没有任何功能的,所以我们可以把它改为一些使用较为频繁功能的触发键。如把 Shift 的短按操作改为切换中英文输入法。

按下,松开;再按下,再松开。当重复短按的操作时,功能键会重复执行相同操作,修饰键同样没有任何功能,因此一些第三方应用以此作为触发键,如 Alfred、iTerm2 等,可设为任意修饰键连按两次唤出,此类操作称为连按(Double Tap)。而我们同样可以把一些功能赋予连按,比如个人习惯在任意应用中使用 Vim 模式,所以把 ESC 设为连按两下自动切换到英文输入法状态。需要注意的是连按时,第一次仍然保持原有按键的功能,第二次时才会改为指定功能。

按下,保持

当一个按键保持着按下的状态时,按键默认会持续重复执行相同功能,直到松开为止,这类操作称为长按。它同样可以作为触发键,如在能 macOS 中显示当前应用快捷键的应用 CheatSheet,便是长按 Command 触发查询操作。

如前文所言,修饰键也是长按操作,不同的地方在于它在保持长按的状态时,需要短按其它按键,这类操作是修饰键的专属,称之为按住。按住操作并不会影响原有的长按操作,后者的触发时间通常要长一些。

最后

总结一下:

  • 类型
    • 功能键:按下松开一个按键之后,会执行特定功能;
    • 状态键:按下松开一个按键之后,会持续的改变其它按键的功能,直到再次按下相同按键;
    • 修饰键:按住一个按键不放的同时按另一个按键,这时保持按住状态的按键便成为修饰键;
  • 操作
    • 短按:按下和松开一个按键的过程;
    • 连按:连续对一个按键重复短按操作;
    • 长按:按键保持按下状态,直至触发功能;
    • 按住:按键保持按下状态,同时短按其它键;

一个按键可以同时拥有短按、连按、长按和按住四种操作,除了修饰键只能使用按住操作之外,功能键和状态键可以使用任意三种操作触发。另外,需要注意的是不建议在使用频率很高的短按操作上再设定连按操作,非常容易误操作。下面是一些适合更改的按键,及默认操作:


按键 短按 长按 按住 连按
ESC 默认
Tab 默认 重复自身 重复自身 重复自身
Control 无功能 默认
lShift 无功能 默认
lOption 无功能 默认
lCommand 无功能 默认
Space 默认 重复自身 重复自身 重复自身
rCommand 无功能 默认
rOption 无功能 默认
rShift 无功能 默认


键盘两边按键的默认功能,除了标为默认的之外,其它均可以视需要更改。

个人当前的几个比较稳定的配置:

  • Tab:按住,Vi Mode(全键盘 Vim);
  • Shift:短按,切换中英文输入法;
  • ESC:连按,切换为英文输入法(用于配合 Vim);
  • Space:按住,Hyper 键(Command + Control + Option);

参考