软件史 / ARTICLE

Windows 滚动条快捷键的一段小史

微软开发者博客的 Old New Thing 栏目重提了 Windows 滚动条上的操作约定:几种鼠标点击、一组右键命令、一套键盘对应关系,以及它们怎样被滚轮和触控手势挤成默认值。

微软开发者博客的 Old New Thing 栏目最近发了一篇《A brief history of Windows scroll bar shortcuts》。这条链接在 Hacker News 上攒到 139 分、80 条评论。一个讲滚动条怎么用的帖子能引来这么多讨论,本身就说明问题:这些约定太旧、太熟,熟到没人记得它们是被设计出来的。

一根滚动条,四种动作

Windows 1.0 的滚动条就定下了基本分工:两端是箭头按钮,点一下走一行;箭头和滑块之间的空白区域点一下走一页;滑块本身可以拖到任意位置。这套分工后来在 Win32 里固化成一串消息——SB_LINEUP、SB_PAGEUP、SB_THUMBTRACK——程序可以自己处理,但绝大多数程序选择不处理,于是它成了全系统共享的手感。

那个年代的滚动条上还有一件今天见不到的东西:两端各有一个双箭头区域,点一下等同于翻页。后来的版本把它去掉了,因为箭头加轨道空白的组合已经覆盖同样的功能,多一排按钮只会让滚动条变长。同一时期定下的还有一条细节:翻页时保留上一屏的最后一行,让前后内容接得上。今天几乎没人注意到这一点,但它一直在那儿。

右键菜单和键盘的那一半

容易被忘掉的是滚动条的右键菜单:Scroll Here、Top、Bottom、Page Up、Page Down、Scroll Up、Scroll Down。它把鼠标能完成的操作翻译成命令,也顺手解决了拖不准滑块的问题——先把指针放到目标行,再选 Scroll Here。对一个宽度只有十几像素的控件来说,这是相当聪明的补救。

键盘是另一条线。Page Up 和 Page Down 翻页,方向键走行,Home 和 End 跳到首尾,对应关系和滚动条完全一致,只是入口不同。键盘上那个 Scroll Lock 键原本也属于这个体系:按下之后方向键不再移动光标,改为滚动视图。它在 PC 上活到今天,功能基本只剩一个指示灯。

滚轮改变的是什么

鼠标滚轮在九十年代中后期变成标配,Windows 需要在系统设置里回答一个新问题:滚一格算几行。默认值落在三行,这个数字至今留在 SPI_GETWHEELSCROLLLINES 里。滚轮和滚动条的区别不止在速度。拖动滑块说的是“我要去那里”,滚轮一格说的是“再往前一点”——前者需要一个位置,后者只需要方向和增量。当后一种操作变成主流,滚动条就从操作面板退成了位置指示器:你看着它,但很少去点它。

触屏和触控板把这件事推得更远。Windows 10 之后,UWP 应用和系统设置里的滚动条默认收成一条细线,指针靠近才展开;Windows 11 沿用了这个处理。滚动条还在,只是默认不参与操作。

回头看,滚动条快捷键的历史其实是输入设备更替的历史。箭头按钮和轨道点击对应的是单键鼠标,右键菜单和键盘算是补在上面的补丁,滚轮和手势把它们一起挤到了后台。这些快捷操作没有消失,它们变成了默认值。今天滚动一个窗口,你不需要知道 SB_PAGEUP 是什么,这大概是一个快捷键能得到的最好结局。

END
反馈