在简书群里看到官方新上线了《小细节 好产品》专题,想到不久前遇到的一个功能细节,也许值得记录一下。
之前给一个界面增加缩放功能。在考虑快捷键的设定时,我想当然地以为这是一个约定俗成的通用规范、没多想便写了如下需求:
- 放大一级:Ctrl 和 +
- 缩小一级:Ctrl 和 -
是不是没毛病?人家都是这么做的,比如 Chrome,看看它的快捷键列表:
然而,开发小哥实现之后,测试同学反应「放大」的快捷键并没有效果。开发小哥解释到「你按的是 =
不是 +
」。
我在一旁听到他们的对话后,终于意识到了这个之前被我完全忽略的问题:
-
旁边的并不是+
,而是=
,真正的+
是小键盘上的那个按键。
好吧,这个锅算我的,需求里确实写的是 +
,严格按照需求而言,开发实现得并没有错。那么,改需求呗,但这次不能随便写了,得好好思考一下。
「放大」的方式
对于「+」这个符号,用户映射到物理键盘上,可能存在多种不同的理解;
相应的,用户企图按下「Ctrl 和 +」这个「放大」的快捷键组合时,实际上也会存在多种不同的操作方式。
-
+
- 确切的说,是小键盘上的
+
,这个按键不会存在二义性,只要用过小键盘就知道这个按键表示的是「+」 - 如果用户的习惯就是操作小键盘,那「Ctrl 和 +」实际的按键组合就是:
Ctrl
和+
-
=
- 虽然这个按键默认表示的是「=」,但它同时也刻有「+」
- 当用户的目标是「缩放」时,由于「 + 与 - 」在认知常识中具有强关联性,很容易就会把「-」旁边的按键当成是「+」、下意识地忽略了「=」的存在
- 在这个情况下,「Ctrl 和 +」实际的按键组合是:
Ctrl
和=
-
Shift
+=
- 稍稍学过打字的都知道,如果想打出「+」这个符号,可以按
Shift
+=
- 当一个刚知道 Shift 用法的初学者用户,又是第一次看到「Ctrl 和 +」这一快捷键的介绍时
- 正因为是初学者、没有先验知识,有更大概率会相对仔细地看键盘上的按键
- 从而意识到
-
旁边是=
、而不是+
- 此时如果继续沿用 Shift 逻辑、用
Shift
和=
来表示「+」,最终按下的实际的按键组合就成了:Ctrl
Shift
+=
简单整理
基于以上 3 种对于「+」的不同理解,当我们在设定「放大」的快捷键为「Ctrl 和 +」时,可能存在的用户实际操作行为有:
Ctrl
和+
Ctrl
和=
Ctrl
Shift
和+
验证「放大」
基于上述思考结论,我在各种主流浏览器和一些个人常用的、且支持缩放功能的软件上都测试了一翻。果然,绝大部分对这 3 种按键组合都支持,不过也有部分并没有支持全,详见下表:
软件名称 |
Ctrl 和 =
|
Ctrl 和 +
|
Ctrl Shift 和 +
|
---|---|---|---|
Chrome | ✔️ | ✔️ | ✔️ |
Firefox | ✔️ | ✔️ | ✔️ |
Safari | ✔️ | ✔️ | ✔️ |
Edge | ✔️ | ✔️ | ✔️ |
IE | ✔️ | ✔️ | ✔️ |
360浏览器 | ✔️ | ✔️ | ✔️ |
搜狗浏览器 | ✔️ | ✔️ | ❌ |
QQ浏览器 | ✔️ | ✔️ | ❌ |
XMind | ✔️ | ✔️ | ✔️ |
Sublime | ✔️ | ✔️ | ✔️ |
Sketch | ✔️ | ✔️ | ✔️ |
Principle | ✔️ | ✔️ | ✔️ |
OmniGraffle | ✔️ | ❌ | ❌ |
微信 | ✔️ | ❌ | ✔️ |
(为了便于阅读,统一使用的是 Windows 标准的按键,对于 MacOS 的软件,还请各位看官自行翻译)
对了,还有「缩小」
前面一直在介绍「放大」,与之相对的「缩小」快捷键「Ctrl 和 -」也需一并完善:
- 首先得补上包含 Shift 的情况
- 一方面是与「放大」对称
- 另一方面,下划线
_
与减号-
,在物理键盘上都是一条横线、只是长短差异,因此也存在把_
当成-
的可能性
- 其次,小键盘上的
-
、以及=
左侧的-
,虽然都是「减号」,但这两个按键在程序实现上对应的也是不同的 ASCII 码、程序需要分别支持。
最终的「缩放」快捷键
所以,缩放功能更准确的完整快捷键是:
放大一级:
Ctrl
和=
Ctrl
和+
(小键盘)Ctrl
Shift
和+
缩小一级:
Ctrl
和-
Ctrl
和-
(小键盘)Ctrl
Shift
和-
最后
最后当然是把上述结论补充到需求中啦...
本文涉及到各种符号,总担心格式上显得凌乱,特此说明一下:
- 所有用「+」这类引号格式的,表示理解认知中的符号
- 所有用
+
这类代码格式的,表示键盘上确切的物理按键