自上一篇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);

参考