将 USB 接口连接到“所有演示之母”的 Keyset

将 USB 接口连接到“所有演示之母”的 Keyset

在 1960 年代初期,Douglas Engelbart 开始研究计算机如何增强人类智能:“如果在你的办公室里,你作为一个脑力劳动者,拥有一个计算机显示器,并由一台整天为你服务、对你的每一个动作都立即响应的计算机支持,你能从中获得多大的价值?” Engelbart 开发了许多现代计算的特性,我们现在认为这些特性是理所当然的:鼠标、超文本、共享文档、窗口和图形用户界面。在 1968 年的 Joint Computer Conference 上,Engelbart 在一个开创性的演示中展示了这些创新,现在被称为“所有演示之母”(The Mother of All Demos)。

The keyset with my prototype USB interface. 带有我的原型 USB 接口的 Keyset。

Engelbart 的演示还包括一个名为 Keyset 的输入设备,但与他的其他创新不同,Keyset 并未流行起来。这种五指 Keyset 让你无需移动手即可打字,通过同时按下多个键作为和弦来输入字符。他的女儿 Christina Englebart 将 Engelbart 的一个 Keyset 借给了我。我构建了一个接口,将 Keyset 连接到 USB,以便它可以与现代计算机一起使用。下面的视频显示我正在使用 Keyset 打字,并使用鼠标按钮选择大写字母和特殊字符。2

我写这篇博文是为了描述我的 USB Keyset 接口。然而,在此过程中,我被“所有演示之母”的历史以及它如何获得这个名称分散了注意力。事实证明,Engelbart 的演示并不是第一个被称为“所有演示之母”的演示。

Engelbart 和“所有演示之母”

Engelbart 的工作起源于 Vannevar Bush 1945 年具有远见的文章《As We May Think》。Bush 设想了思维机器,以及“memex”,这是一种紧凑的机器,包含一个集体知识库,其中包含超文本风格的链接:“《不列颠百科全书》可以缩小到火柴盒的大小。”memex 可以基于联想搜索来搜索信息,建立一个类似超文本的连接轨迹。

在 1960 年代初期,Engelbart 受 Bush 的文章启发,着手开发增强人类智力的方法:“提高一个人处理复杂问题情境、获得满足其特定需求的理解以及推导出问题解决方案的能力。”3 Engelbart 在 Stanford Research Institute(现在的 SRI)成立了 Augmentation Research Center,他和他的团队在那里创建了一个名为 NLS (oN-Line System) 的系统。

Engelbart editing a hierarchical shopping list. Engelbart 正在编辑一个分层购物清单。

1968 年,Engelbart 在 Fall Joint Computer Conference 上向两千人展示了 NLS。Engelbart 在舞台上进行了演示,他穿着笔挺的衬衫和领带,戴着头戴式麦克风。Engelbart 创建了分层文档,例如上面的购物清单,并使用超链接在其中移动。他演示了如何使用 Keyset 和鼠标创建、移动和编辑文本。其他文档包括图形,以今天的标准来看是很粗糙的线条图,但在当时却是最前沿的。计算机的输出被投射到一个巨大的屏幕上,以及 Engelbart 的视频。

Engelbart using the keyset to edit text. Note that the display doesn't support lowercase text; instead, uppercase is indicated by a line above the character. Adapted from The Mother of All Demos. Engelbart 正在使用 Keyset 编辑文本。请注意,显示器不支持小写文本;而是用字符上方的线条表示大写。改编自“所有演示之母”

Engelbart 坐在一个专门设计的 Herman Miller 桌子6旁,桌子上放着 Keyset、键盘和鼠标,如上图所示。当 Engelbart 在旧金山的舞台上时,运行 NLS 软件的 SDS 9404 计算机位于南边 30 英里的 Menlo Park。5

在现代人看来,这个演示类似于在 Zoom 上进行 PowerPoint 演示,Engelbart 与 Jeff Rulifson 和 Bill Paxton 合作,他们远在 Menlo Park。(就像现代 Zoom 通话一样,远程连接以“我们听不到你。现在怎么样?”开始。)Jeff Rulifson 浏览了 NLS 代码,通过超链接在代码文件之间跳转,并通过单击展开子程序。NLS 是用自定义的高级语言编写的,他们使用名为 TREE-META 的“编译器编译器”开发了这些语言。NLS 系统包含交互式文档,并跟踪错误和更改。Bill Paxton 交互式地绘制了一个图表,然后演示了如何将 NLS 用作数据库,通过搜索关键字来检索信息。(虽然 Engelbart 因现场演示而感到压力,但 Paxton 告诉我,他“太年轻,没有经验,所以并不担心”。)

Bill Paxton, in Menlo Park, communicating with the conference in San Francisco. Bill Paxton 在 Menlo Park 与旧金山的会议进行交流。

Bill English 是一位电气工程师,他不仅为 Engelbart 构建了第一个鼠标,还是演示背后的硬件策划者。在旧金山,屏幕图像通过一个大众汽车大小的 Eiodophor 投影仪投射到 20 英尺的屏幕上,该投影仪将光线从一个调制的油膜上反射出来。许多摄像机、视频切换器和混合器创建了视频图像。两条租用的微波链路和六个天线将 Menlo Park 的 SRI 连接到旧金山的演示。高速调制解调器将鼠标、Keyset 和键盘信号从演示发送回 SRI。Bill English 花了几个月的时间组装演示的硬件和网络,然后在幕后管理演示,由大约 17 人的团队协助。

另一位参与者是著名的反主流文化人士 Stewart Brand,他以《全球概览》 和 WELL(最古老的在线虚拟社区之一)而闻名。Brand 为 Engelbart 的演示提供建议,并负责操作一台摄像机。他经常将摄像机对准显示器,以产生漩涡状的迷幻反馈模式,让人想起他和 Engelbart 试验过的 LSD。

这次演示受到了媒体的关注,例如《旧金山纪事报》上的一篇文章,题为“明日计算机的奇妙世界”。文章指出,“对计算机未来最奇妙的一瞥发生在 Civic Auditorium 三楼一间没有窗户的房间里”,Engelbart 在那里“让 Menlo Park 的一台计算机为他做秘书工作,这是十个高效的秘书在两倍的时间内都无法完成的。”他的目标:“我们希望帮助人类更好地完成他们所做的事情——也许可以提高 50%。”然而,在接下来的几十年里,这次演示并没有受到太多的关注。7

Engelbart 在 SRI 继续工作了近十年,但正如 Engelbart 沮丧地评论道,“SRI 对我们的价值的看法略低于普遍看法”。8 1977 年,SRI 将 Augmentation Research Center 出售给 Tymshare,这是一家分时计算公司。(分时是 1970 年代和 1980 年代的云计算,公司会使用中央计算机上的时间。)在 Tymshare,Engelbart 的系统被重命名为 AUGMENT,并作为办公自动化服务进行销售,但 Engelbart 本人被排除在开发之外,他将这种情况描述为坐在角落里,变得隐形。

与此同时,Bill English 和其他一些 SRI 研究人员9 向南迁移了四英里,来到了 Xerox PARC,并致力于 Xerox Alto 计算机的开发。Xerox Alto 融合了 Augmentation Research Center 的许多想法,包括图形用户界面、鼠标和 Keyset。Alto 的 Keyset 几乎与 Engelbart 的 Keyset 相同,如下面的照片所示。Alto 的 Keyset 最受欢迎的是网络 3D 射击游戏“Maze War”,Keyset 的点击声在 Xerox PARC 的走廊里回荡。

A Xerox Alto with a keyset on the left. 左侧的 Xerox Alto 带有一个 Keyset。

众所周知,Xerox 未能将 Xerox Alto 的想法商业化,但 Steve Jobs 在 1979 年参观 Xerox PARC 时,认识到了交互性、图形用户界面和鼠标的重要性。Steve Jobs 提供了 Apple Lisa 和 Macintosh,最终它们都配备了图形用户界面和鼠标(简化为单按钮而不是三个),但他放弃了 Keyset。10

当 McDonnell Douglas 在 1984 年收购 Tymshare 时,Engelbart 和他的软件(现在称为 Augment)有了一个新的家。11 1987 年,McDonnell Douglas 为 IBM PC 发布了一个文本编辑器和大纲处理器,名为 MiniBASE,这是少数几个支持 Keyset 的 PC 应用程序之一。MiniBASE 的功能几乎与 Engelbart 1968 年的演示相同,但在 1987 年,MiniBASE 正在与基于 GUI 的文字处理器(如 MacWrite 和 Microsoft Word)竞争,因此 MiniBASE 的影响很小。Engelbart 于 1988 年离开 McDonnell Douglas,成立了一个名为 Bootstrap Institute 的研究基金会,以继续他的独立研究。

名称:“所有演示之母”

“所有演示之母”这个名称起源于海湾战争。1990 年 8 月,伊拉克入侵科威特,导致伊拉克与美国和 41 个其他国家的联盟之间爆发战争。在实际冲突之前的几个月准备期间,伊拉克领导人萨达姆·侯赛因敦促伊拉克人民为“所有战斗之母"12做好准备,这句话引起了媒体的注意。这场战斗并没有像侯赛因希望的那样进行:在整整 100 个小时的地面战斗中,美国领导的联盟解放了科威特,进军伊拉克,击溃了伊拉克军队,并宣布停火。13 侯赛因的所有战斗之母变成了所有投降之母

“所有...之母”这个短语成为 1990 年代相当于 meme 的说法,用作略带讽刺的最高级。它被应用于从“所有交通堵塞之母”“所有 Windows 书籍之母”,从“所有黄油饼干之母”到 Apple 将移动设备称为“所有市场之母”的任何事物。14

1991 年,这个最高级被应用于一个计算机演示,但不是 Engelbart 的演示。Intel 总裁 Andy Grove 在 1991 年的 Comdex 上发表了题为“第二个十年:计算机支持的协作”的主题演讲,这是一个现场演示,展示了他对 PC 视频会议和 PC 第二个十年中的无线通信的愿景。这个复杂的长达一小时的演示花了近六个月的时间准备,有 15 家公司参与合作。Intel 称这次演示为“所有演示之母”,这个名称在《纽约时报》、《旧金山纪事报》、《财富》和《PC Week》中被重复使用。15 Andy Grove 的演示大获成功,有超过 20,000 人索要录像带,但这次演示很快就被遗忘了。

On the eve of Comdex, the New York Times wrote about Intel's "Mother of All Demos". Oct 21, 1991, D1-D2. 在 Comdex 前夕,《纽约时报》报道了 Intel 的“所有演示之母”。1991 年 10 月 21 日,D1-D2。

1994 年,《Wired》杂志的撰稿人 Steven Levy 写了《疯狂的伟大:Macintosh 的生活和时代,改变一切的计算机》8 在这本综合书籍的第二章中,Levy 解释了 Vannevar Bush 和 Doug Engelbart 如何“引发了一系列连锁反应”,最终导致了 Macintosh 的诞生。本章详细描述了 Engelbart 1968 年的演示,其中包括一句随意的台词,称“这是所有演示之母。"16 根据我的研究,我认为这是 Engelbart 的演示被称为“所有演示之母”的来源。

到本世纪末,许多出版物都呼应了 Levy 朗朗上口的短语。1999 年 2 月,《圣何塞信使报》发表了一篇关于 Engelbart 的特别文章,称这次演示“仍然被称为‘所有演示之母’”,行业出版物 Computerworld 也呼应了这种说法。17Nerds: A Brief History of the Internet》一书指出,这次演示“已经作为‘所有演示之母’进入了传说”。至此,Engelbart 因“所有演示之母”而闻名已经根深蒂固,在撰写关于他的文章时,这个短语几乎成为了一种义务。例如,经典的硅谷历史著作《Fire in the Valley》(1984) 甚至没有提到 Engelbart,但在第二版 (2000) 中,“所有演示之母”有了自己的章节。

将 Keyset 连接到 USB 接口

回到 Keyset 接口,Keyset 由五个微动开关组成,这些微动开关由五个杠杆触发。这些开关连接到一个标准的 DB-25 连接器。我使用了一个 Teensy 3.6 微控制器板作为接口,因为该板既可以充当 USB 设备,也可以充当 USB 主机。作为 USB 设备,Teensy 可以模拟标准的 USB 键盘。作为 USB 主机,Teensy 可以接收来自标准 USB 鼠标的输入。

将 Keyset 连接到 Teensy(几乎)很简单,只需将开关连接到 Teensy 上的五个数据输入,并将公共线连接到地。Teensy 的输入线可以在微控制器内部配置上拉电阻。结果是,数据线默认显示 1,当按下相应的键时显示 0。一个复杂的情况是,Keyset 显然在最左边的按钮和地之间有一个 1.5 KΩ 电阻,可能是为了指示设备已插入。这个电阻导致该行始终向 Teensy 显示为低电平。为了抵消这一点并允许 Teensy 读取引脚,我将一个 1 KΩ 上拉电阻连接到该行。

接口代码

读取 Keyset 并通过 USB 发送字符非常简单,但有一些复杂之处。首先,用户不太可能同时按下多个 Keyset 按钮。此外,按钮触点可能会抖动。为了解决这个问题,我等到按钮的值稳定 100 毫秒(一个半任意的延迟)后,再通过 USB 发送一个键。

第二个复杂之处在于,使用五个键,Keyset 仅支持 32 个字符。为了获得大写字母、数字、特殊字符和控制字符,Keyset 旨在与鼠标按钮结合使用。因此,该接口需要充当 USB 主机,以便我可以将 USB 鼠标插入接口。如果我希望鼠标可以作为鼠标使用,而不仅仅是与 Keyset 结合使用的按钮,则接口必须通过 USB 转发鼠标事件。但这并不容易,因为与 Keyset 结合使用的鼠标点击不应转发。否则,在使用 Keyset 时会发生不必要的点击。

为了模拟键盘,该代码使用了 Keyboard 库。这个库提供了一个 API,用于将字符发送到目标计算机。不方便的是,最简单的方法 print() 仅支持常规字符,不支持 ENTERBACKSPACE 等特殊字符。对于这些,我需要使用较低级别的 press()release() 方法。为了读取鼠标按钮,该代码使用了 USBHost_t36 库,这是 USB Host 库的 Teensy 版本。最后,为了将鼠标移动传递到目标计算机,我使用了 Mouse 库。

结论

Engelbart 声称学习 Keyset 并不困难——一个六岁的孩子可以在不到一周的时间内学会——但我不愿意投入太多时间来学习它。在我短暂使用 Keyset 的过程中,我发现它在物理上很难使用。同时按下四个键很困难,最糟糕的是除了无名指之外的所有手指。同时将它与一个或两个鼠标按钮结合起来,让我觉得我正在视奏一首困难的钢琴曲。也许随着使用会变得更容易,但我注意到 Alto 程序倾向于将 Keyset 视为功能键,而不是用和弦打字的机制。18 Xerox PARC 的 David Liddle :“我们发现 [Keyset] 往往会减慢人们的速度,一旦你远离真正热门的东西 [系统程序员]。如果你把它给其他工程师,更不用说文员等等,那就没那么好了。”

如果还有其他人想通过 USB 连接 Keyset(尽管这不太可能),我的代码在 GitHub 上。19 感谢 Christina Engelbart 将 Keyset 借给我。感谢 Bill Paxton 回答我的问题。在 Bluesky (@righto.com) 或 RSS 上关注我以获取更新。

脚注和参考文献

  1. Engelbart 使用鼠标并非随意的,而是基于研究。1966 年,在发明鼠标后不久,Engelbart 进行了一项 NASA 赞助的研究,评估了六种输入设备:两种类型的操纵杆、一个 Graphacon 定位器、鼠标、光笔和一个由膝盖控制的控件(让双手空闲)。鼠标、膝盖控制和光笔表现最佳,用户发现鼠标使用起来很满意。虽然没有经验的受试者在使用鼠标时遇到了一些麻烦,但有经验的受试者认为它是最好的设备。

A joystick, Graphacon, mouse, knee control, and light pen were examined as input devices. Photos from the study. 一个操纵杆、Graphacon、鼠标、膝盖控制和光笔被作为输入设备进行检查。照片来自该研究 2. 来自 Augmentation Research Center 的以下信息表显示了哪些 Keyset 和弦对应于每个字符。我将此编码用于我的接口软件。每列对应于鼠标按钮的不同组合。

The information sheet for the keyset specifies how to obtain each character. Keyset 的信息表指定了如何获得每个字符。

上面的特殊字符是 <CD>(命令删除,即取消部分输入的命令)、<BC>(退格字符)、<OK>(确认命令)、<BW>(退格单词)、<RC>(替换字符)、<ESC>(执行文件名完成)。

NLS 和 Augment 软件具有 viewspec 的概念,这是一种控制文件视图的视图规范。例如,视图规范可以展开或折叠大纲以显示更多或更少的细节,过滤内容或显示章节的作者身份。Keyset 可以选择视图规范,如下所示。

Back of the keyset information sheet. Keyset 信息表的背面。

“所有演示之母”中更详细地解释了视图集。对于我的 Keyset 接口,我忽略了视图规范,因为我没有软件来使用这些输入,但是很容易修改代码以输出所需的视图规范字符。 3. 参见 Engelbart 1962 年的报告 Augmenting Human Intellect: A Conceptual Framework 4. Engelbart 使用 一台运行 Berkeley Timesharing System 的 SDS 940 计算机。该计算机具有 64K 字的磁芯内存,具有 4.5 MB 的鼓存储用于交换和 96 MB 的磁盘存储用于文件。对于显示器,计算机驱动十二个 5 英寸高分辨率 CRT,但这些 CRT 没有被直接观看。相反,每个 CRT 都有一个摄像机对准它,视频在每个办公室的工作站中的较大显示器上重新显示。

SDS 940 是一台大型 24 位科学计算机,由 Scientific Data Systems 构建。虽然 SDS 在 1965 年构建了第一台基于集成电路的商用计算机(SDS 92),但 SDS 940 是一个晶体管化系统。它由多个冰箱大小的机柜组成,如下所示。由于每个内存机柜可容纳 16K 字,而 SRI 的计算机有 64K,因此 SRI 的计算机还有两个额外的内存机柜。

Front view of an SDS 940 computer. From the Theory of Operation manual. SDS 940 计算机的前视图。来自操作理论手册。

在 1960 年代后期,Xerox 想要进入计算机行业,因此 Xerox 在 1969 年以 9 亿美元(按当前美元计算约为 80 亿美元)购买了 Scientific Data Systems。此次收购是一场灾难。在持续亏损后,Xerox 决定在 1975 年退出大型计算机业务。Xerox 的 CEO 总结了此次收购:“事后看来,我们不会做同样的事情。” 5. “所有演示之母”在 YouTube 上,以及为没有耐心的人提供的五分钟摘要 6. Keyset 和鼠标的桌子由办公家具公司 Herman Miller 设计。Herman Miller 与 SRI 合作设计桌子和办公室墙壁,作为他们未来办公室计划的一部分。Herman Miller 在 1964 年发明了隔间办公室,为常用的开放式办公室布置创造了现代替代品。 7. Engelbart 的演示现在很出名,但多年来它被忽略了。例如,《Electronic Design》在 1969 年发表了一篇关于 Engelbart 工作的长篇[文章](https://www.righto.com/2025/03/<https:/