2016:关于计算机输入设备的改进

一种输入设备可以做出的单元操作数量总是有限的。如果一个软件需要的总操作数大于它所使用的输入设备的单元操作的总数,有三种方法来解决:

  1. 修改输入设备,增加单元操作数;
  2. 把多个单元操作组合成一个操作;
  3. 让每个单元操作的功能随程序上下文改变。

输入设备按照目标用途和目标用户,可以大体上分为两类:通用输入设备和专用输入设备。

通用输入设备面向普通用户和初学者。它往往致力于降低学习成本,在单元操作的重复频率上没有较高要求,适用于大多数场景,因此往往设计为符合交互直觉,在扩展操作数量的方式上常常使用方法 3。

专用输入设备面向的用户群包括:中等水平用户,高级用户,从其他工作原理不同的设备迁移过来的用户。它为了高效、高单元操作重复频率、强化肌肉记忆、不打破已存在设备的使用习惯,往往会在交互直觉、使用范围和学习成本上做出比较大的妥协。也正因此,它往往会使用方法 1 和 2 来扩展操作数量。

不同的应用场景和使用者的水平,适用的输入设备是截然不同的。

比如输入音乐。一个没有任何专业知识的普通人,输入音乐的最符合直觉的方式是使用话筒演唱。一个知道 do re mi 之类基础乐理知识的计算机用户,如果不满于难以精确采样出乐谱的话筒演唱方式,那么往往会选择使用计算机键盘进行一个键对应一个音的输入。一个键盘乐器演奏者和一个吉他演奏者可能分别会选择编曲键盘和电吉他来输入音乐。一个作曲家更有可能使用绘图笔直接绘制乐谱,由软件实时数字化。

比如玩游戏。主机玩家如我,对于一般的 Platformer 可能就会选择手柄来玩,键盘也不是不可以。但是如果玩 FPS 呢,手柄就有点力不从心了(尤其是对面拿着鼠标键盘的时候),我会选择鼠标键盘。如果有条件的话,玩赛车和飞机的时候我更希望使用方向盘和操纵杆作为主要输入设备。

方法 3 和其余方法的最大不同在于,它需要程序上下文的辅助。我们举一个最简单的有穷上下文例子:中文输入法。

不知道各位有没有过这样的体验:你在某次输入时一不小心按错一个数字键,选错了一个字;然后你按了 backspace,再输入一次,按下之前记忆的数字键,但是由于上一次输入导致词的排序出现了改变,这次仍然输入了错误的字。

如果你可以耐心地等待候选词列表跟上你击键的速度,然后把它认真阅读一遍,找到正确的字的顺序号,接着低头看键盘,找到正确的数字键来按下的话,是绝不会出现这样的问题的。这样的流程对业余用户也绝对没有任何问题:因为这是符合直觉的。

但是一旦你的输入速度快过了某个阈值以后,事情就开始起变化了。你不再有时间去观看候选词列表,也没有时间去看键盘,取而代之的是记忆和负反馈过程:候选词列表里面的词语顺序被你暂时记住,而刚才把数字 5 错按成 6 的经验让你下次按 5 的时候手指会往左偏一点点,这样的负反馈过程在重复一次或多次以后,你最终会自动找到手指的正确位置。

但是现在候选词的顺序会变化,于是你在第二次击键的时候正确地按下了 5,出来的却是原来那个词。经过一段时间的思考(打断这个负反馈过程并且发现出问题的原因是需要时间的),你发现是候选词列表的顺序发生了改变。于是下次击键的时候你不得不仔细阅读新的候选词列表。这样的改变导致输入速度下降了两个数量级。

无穷上下文的情况则稍有不同。比如颜色选择器,或者音乐播放器的进度条,它们的可选项是(近似)连续变化的,我们很难通过习惯和肌肉记忆来一次找到合适的值。(当然,在更高专业性的场合,此类情况仍然存在,比如驾驶飞机。)在这种情况下,负反馈的延迟是被允许的,因此一个无法精确控制位置的 slider 在大多数情况下已经够用。

Touch Bar 属于通用输入设备,相对于原键盘的改进属于方法 3,同时在有穷上下文和无穷上下文中应用;Surface Dial 属于专用输入设备,相对于原触摸屏的改进属于方法 1,主要应用于无穷上下文。目前在骂 Touch Bar 的人主要是惯用有穷上下文场景,对重复输入速度有高要求的中、高级用户;Surface Dial 作为可选件,我还没见到骂它的人。(当然,似乎这二者都还没有人实际使用过。)

结论是显然的:Touch Bar 一点都不 Pro。或者说,大部分消费者电子产品和应用软件会越来越照顾入门级别的消费者,从而为此做出一些舍弃。

Sorry, there's no ESCape.

编辑于 2016-11-16 18:25