「すべてのデモの母」のキーセット向けUSBインターフェース
(righto.com)- Douglas Engelbartの1968年のNLSデモに登場した5本指キーセットを現代のコンピュータで使うため、Teensy 3.6ベースのUSBインターフェースを製作
- キーセットは複数の指キーを同時に押す**コード入力(chord)**デバイスのため、英大文字・数字・特殊文字・制御文字を入力するにはマウスボタンの組み合わせまで使う必要がある
- インターフェースはTeensyをUSBキーボードデバイス兼USBマウスホストとして動作させ、入力が100msのあいだ安定したときだけキー入力を送信する
- Engelbartのデモはマウス、ハイパーテキスト、共有文書、ウィンドウ、GUIを先取りして示したが、キーセットはXerox Altoでも主にファンクションキーのように使われ、広く普及はしなかった
- 「The Mother of All Demos」という名称は1968年当時の呼び名ではなく、1990年代の「mother of all...」流行とSteven Levyの1994年の著書を経て定着した
EngelbartのNLSと1968年のデモ
- Douglas Engelbartは1960年代初頭から、コンピュータが人間の知能を拡張する方法を研究していた
- 彼の仕事はVannevar Bushの1945年のエッセイ As We May Think に大きな影響を受けた
- Bushは知識ライブラリとハイパーテキスト的なリンクを備えたmemexを構想していた
- EngelbartはStanford Research Institute、現在のSRIにAugmentation Research Centerを設立し、NLS(oN-Line System) を開発した
- 1968年のFall Joint Computer Conferenceで、約2,000人を前にNLSを実演した
- 階層型文書と買い物リストを作り、ハイパーリンクで移動した
- キーセットとマウスでテキストを作成し、移動・編集した
- 文書には当時として先進的なグラフィックスや線描画も含まれていた
- デモを動かしていたSDS 940コンピュータは、San Franciscoの会場ではなく30マイル南のMenlo Parkにあった
- 会場では遠隔協業もあわせて披露された
- Jeff RulifsonはNLSコードをたどり、ハイパーリンクでコードファイル間を移動した
- Bill Paxtonは図を描き、キーワード検索で情報を調べるデータベース的な使い方を示した
デモを可能にしたハードウェアとネットワーク
- Bill EnglishはEngelbartのために最初のマウスを作り、1968年デモのハードウェア総責任者も務めた
- San Franciscoの映像はVolkswagenほどの大きさのEidophorプロジェクターで20フィートのスクリーンに投影された
- 複数のカメラ、ビデオスイッチャー、ミキサーが画面構成を作り、SRI Menlo Parkと会場は借りた2本のマイクロ波リンクと複数のアンテナで結ばれていた
- マウス、キーセット、キーボードの信号は高速モデムを通じて会場からSRIへ送られた
- Bill Englishは数か月かけてハードウェアとネットワークを組み上げ、およそ17人のチームの助けを得て舞台裏からデモを運用した
- Stewart Brandも発表の助言やカメラ操作に参加した
- カメラをモニターへ向けて、渦巻くフィードバックパターンを作ることもあった
キーセットがたどった道と消えた理由
- Engelbartのデモには現代コンピューティングでおなじみのマウス、ハイパーテキスト、共有文書、ウィンドウ、GUIが含まれていたが、キーセットは広く採用されなかった
- キーセットは、手を移動させずに5本の指キーを同時に押して文字を入力する装置である
- SRIのAugmentation Research Centerは1977年にTymshareへ売却された
- NLSはTymshareでAUGMENTに改名され、オフィスオートメーションサービスとして販売された
- Engelbartは開発から外され、片隅に座って見えない存在になったようだったと回想している
- Bill Englishと一部のSRI研究者はXerox PARCへ移り、Xerox Altoの仕事に参加した
- AltoはGUI、マウス、キーセットなどAugmentation Research Centerの多くのアイデアを取り入れた
- AltoのキーセットはEngelbartキーセットとほぼ同一で、ネットワーク3Dシューティングゲーム Maze War で特によく使われた
- Steve Jobsは1979年のXerox PARC訪問で、対話性、GUI、マウスの重要性を認識した
- Apple LisaとMacintoshはGUIとマウスを採用したが、キーセットは採用しなかった
- McDonnell Douglasが1984年にTymshareを買収した後、Augmentは新たな所属先を得た
- 1987年にはIBM PC向けのテキストエディタ兼アウトラインプロセッサ MiniBASE が発売された
- MiniBASEはキーセットをサポートした数少ないPCアプリケーションの1つだったが、MacWriteやMicrosoft WordのようなGUIベースのワープロと競合し、大きな影響は与えられなかった
「The Mother of All Demos」という名称の経緯
- 「The Mother of All Demos」はEngelbartの1968年のデモ当時に付けられた名前ではない
- この表現の源流は湾岸戦争期の「the mother of all battles」にある
- 1990年のIraqによるKuwait侵攻後、Saddam Husseinがこの表現を使い、メディアの注目を集めた
- その後「mother of all ...」は1990年代に、やや皮肉を帯びた最上級表現としてさまざまな対象に使われた
- 1991年、この表現はEngelbartではなくIntelのComdex 1991基調講演デモに先に適用された
- Andy GroveがPCベースのビデオ会議と無線通信のビジョンを示した1時間のライブデモだった
- 準備にはほぼ6か月を要し、15社が協力した
- Intelはこのデモを「The Mother of All Demos」と呼び、New York Times、San Francisco Chronicle、Fortune、PC Weekでもその名が繰り返された
- Engelbartの1968年デモにこの表現が結び付いた主な経路は、Steven Levyの1994年の著書 Insanely Great である
- LevyはEngelbartのデモを扱う中で、「It was the mother of all demos.」という一文を入れた
- 確認できる範囲では、Engelbartのデモに対するこの呼称の出典はLevyの本のようだ
- 1999年ごろには複数の媒体がこの表現を繰り返し、Engelbartの名声と結び付けた
- San Jose Mercury Newsはそのデモが「still called 'the mother of all demos'」と書いた
- Computerworldと Nerds: A Brief History of the Internet も同様に扱っている
- 1984年版 Fire in the Valley ではEngelbartに触れていなかったが、2000年の第2版には「The Mother of All Demos」の章が加わった
USBインターフェースの構成
- 実物のキーセットは5本のレバーが5個のマイクロスイッチを押す構造で、スイッチは標準DB-25コネクタにつながっている
- インターフェース基板には Teensy 3.6 を使用している
- USBデバイスとして動作するときは標準USBキーボードをエミュレートする
- USBホストとして動作するときは標準USBマウス入力を受け取れる
- 配線自体は比較的単純である
- 5個のスイッチをTeensyの5本のデータ入力へ接続する
- 共通線はGNDへ接続する
- Teensy入力は内部プルアップ抵抗を使えるため、初期値は
1で、キーが押されると0になる
- 例外は左端のボタンとGNDの間に入っているように見える1.5 kΩ抵抗である
- この抵抗のため、そのラインはTeensy上で常に低い値に見えてしまう
- その補正のため、そのラインに1 kΩのプルアップ抵抗を接続した
入力処理コードとライブラリ
- キーセットを読み取り、USBで文字を送る作業は単純に見えるが、同時入力と接点バウンスを処理しなければならない
- ユーザーが複数キーを完全に同時に押すのは難しく、スイッチ接点もバウンドすることがある
- コードはボタン値が100msのあいだ安定するまで待ってからUSBキー入力を送信する
- 100msは半ば任意に決めた遅延値である
- 5キーだけでは32文字しか扱えないため、英大文字・数字・特殊文字・制御文字はマウスボタンと組み合わせて入力する必要がある
- インターフェースはUSBマウスを挿すため、USBホストとしても動作する
- マウスを通常のマウスとしても使うには、マウスイベントを接続先コンピュータへ中継する必要がある
- ただしキーセットと併用されたマウスクリックは、中継すると意図しないクリックになるため送らないようにする
- キーボードエミュレーションにはArduinoの Keyboard ライブラリを使う
print()は通常文字しか扱えず、ENTER、BACKSPACEなどの特殊キーはサポートしない- 特殊キーには
press()とrelease()を使う必要がある
- マウスボタンの読み取りには USBHost_t36 ライブラリを使う
- マウス移動を接続先コンピュータへ渡すには Mouse ライブラリを使う
- 自分でキーセットを作りたいなら、Eric Schlaepferの engelbart-keyset モデルを参考にできる
使用感と公開コード
- Engelbartはキーセット学習は難しくなく、6歳の子どもでも1週間以内に習得できると考えていたが、実際に短時間使ってみると物理的にかなり難しく感じられる
- 4本の指を同時に押す動作は難しく、特に薬指以外のすべての指を押す組み合わせが最も厄介だった
- そこにマウスボタン1つまたは2つを同時に組み合わせると、難しいピアノ譜を初見で読む感覚に近かった
- Xerox PARCのDavid Liddleは、キーセットは非常に熟練したシステムプログラマを超える範囲では、人を遅くする傾向があったと語っている
- Altoのプログラム群も、キーセットをコード入力用のタイピング装置というよりファンクションキーのように扱う傾向があった
- USBインターフェースのコードは keyset-to-usb-interface で公開されている
1件のコメント
Hacker News のコメント
Ken の記事はいつものように興味深い。Douglas の**コードキーボード(chorded keyboard)**という概念は、その後かなり成功した後継製品を生んだようだ: https://en.wikipedia.org/wiki/Chorded_keyboard
80年代にオランダで育ったなら Velotype を知らないはずがなく、キーがより多いので「コード」を学びやすいと言われていた。Nerds 2.0.1 の本への言及もよかった。この本は1998年の PBS 3部作シリーズの関連書籍である: https://archive.org/details/movies?tab=collection&query=Nerd...
10年後にスマートフォンが登場してからはかなり滑稽に見えたが、当時は本当にこれが未来だと信じている人たちがいた: https://en.wikipedia.org/wiki/Steve_Mann_(inventor)
Morse のように、最もよく使われる文字をより簡単に送れるよう文字コードが設計されていたことも分かる: [https://en.wikipedia.org/wiki/Baudot_code#/media/File:Baudot...](https://en.wikipedia.org/wiki/Baudot_code#/media/File:Baudot_Code_-_from_1888_patent.png)
12歳だったが、すでにタッチタイピングはかなり得意だったので、Microwriter はとても不格好で直感的でないと感じた。教訓が何なのかは分からないが、良さそうに見えるアイデアが実際に良いとは限らず、タイプライター式キーボードが150年以上生き残っているのには理由があるのかもしれない。
もともとのコードキーボードは、1897年ごろに Baudot が作ったものだった。当初の計画は、送信者が5ビットキーボードで5ビットの電信文字(teletype)を送る方式で、単なる試作品ではなく実際に配備されたシステムだった。
https://collection.sciencemuseumgroup.org.uk/objects/co33197...
初期バージョンでは送信側と受信側が機械的に同期している必要があり、タイピストは相手側が受信できるよう厳密なタイミングを守らなければならなかった。そのため、あらかじめ入力してから自動的に送り込むパンチカード式のバージョンが登場し、操作者に必要な熟練度が下がった。テレタイプへと続く系譜がほとんど見て取れる、良い記事だ。
投稿者です。質問があれば受け付けます
最初の段階は、分解、採寸、重量測定、3Dスキャン、プリントしやすい玩具のような全プラスチック製モデルの制作で、その後はレジン出力と車輪のような既製ハードウェアを使い、オリジナルと同じ重さ・手触り・素材・電子部品を備えた高品質なハイブリッド版へ磨き込みたいと考えています。オリジナルの重さと感触、ポテンショメータに付いた車輪が回転限界にぶつかる無骨さ、机の上をこする感じまで再現することが重要だと思います。実際に手に取ると本当に驚きますが、体験型の博物館に置けばすぐ壊れてしまうでしょう。だから誰でも簡単なプラスチック複製を3Dプリントできたり、高品質な動作する複製を組み立てられたりするとよいと思っています
簡単なモデルと詳細な制作計画は無料で公開したいですし、Computer History Museum のミュージアムショップでキットや完成品として販売してもよいと思います。加速度計とジャイロも入れればジェスチャーゲームコントローラーとしても使えるはずなので、安く簡単に追加できるなら入れない理由はありません
検討中の部品は、ESP32-S3 モジュール、MPU6050 6軸加速度計/ジャイロスコープ、X/Y トラッキングホイール用の 10KΩ ポテンショメータ2個、プルアップ抵抗付きタクタイルボタン3個、3.7V LiPo バッテリー、TP4056 充電モジュール、充電と有線モード用の USB-C コネクタです。経験豊富な方々の助言を聞きたいですし、無料・オープン・非営利の愛情プロジェクトとして Ken とも協力したいと思っています。このプロジェクトのためだけに Bambu の3Dプリンタと Raptor の3Dスキャナを買ったので、すぐに始める準備はできています: don@donhopkins.com
このハードウェアがその後どうなったのか、ずっと気になっていました。現在の入力方式は驚くべきものではあるものの、根本的に欠陥があるし、もう一度飛躍が必要だという信念は今も強くあります
QMK [1] や ZMK [2] のようなカスタム・メカニカルキーボードのファームウェアは、「コンボ」というカスタムコード入力をサポートしています。基本的には、決められたキーの組み合わせが一定時間内に押されると特定のキーコードを送る仕組みで、デフォルトの制限時間は 50ms です
そうすると、発生確率の低い組み合わせを見つけて有用なキーコードにマッピングする、面白いゲームが始まります。活用しやすい重要な領域も見え始めます。2キーのコンボはバイグラムが意外とよく出るので少し考える必要がありますが、3キーのコンボはほとんど未開拓の空間に近いです
ZSA Voyager から36キーキーボードの Chocofi に移行する中で、コンボにかなり頼るようになりました。タップとホールドを区別して1つのキーに複数の機能を入れる方式は、タイミングをどうしても合わせにくいので好きではありません。たとえば現在の配列(Colemak mod DK)では、左手の人差し指・中指・薬指でホーム行の R、S、T を同時に押すと Escape になります。3本指ですが、追加の労力はほとんどありません。記号レイヤーをなくすことができ、結果にはかなり満足しています
[1] https://docs.qmk.fm/features/combo
[2] https://zmk.dev/docs/keymaps/combos
[3] https://configure.zsa.io/voyager/layouts/d7L0v/latest/0
[4] https://github.com/vietjtnguyen/zmk-chocofi/blob/main/config...
Engelbartの他の革新とは異なり、keysetは広く普及しなかったが、コードキーボードはウェアラブルコンピューティングの研究者の間で人気があり、その流れがGoogle Glassのような取り組みにつながった。例としてTwiddlerがある
利点は片手で操作できることで、設計によっては安定した面がなくても同じ手で持ちながら同時に操作できる
1950年代の機械式Braillerから現代の電子点字ディスプレイやノートテイカーまで使われており、この概念をタッチスクリーン向けに適用した入力方式はiOSとAndroidにも内蔵されている
[1] https://wecapable.com/perkins-brailler-braille-typing/
[2] https://support.apple.com/en-us/101637
[3] https://blog.google/products/android/braille-keyboard/
Ted NelsonによるDouglas Engelbart追悼スピーチ: https://www.youtube.com/watch?v=yMjPqr1s-cg
Douglas Engelbartへのオマージュと技術の現状への批判: https://archive.nytimes.com/bits.blogs.nytimes.com/2013/12/1...
DougとKaren EngelbartがMarleneとTedの結婚式を司式した映像: https://www.youtube.com/watch?v=TsKFbwLeS1k
Brett Victorの文章も本質をうまく突いている: https://worrydream.com/Engelbart/
技術系の文章はEngelbartを技術の問題としてだけ解釈し、本質を見落としがちだ。Engelbartは生涯を通じて人間の問題に集中しており、技術は解決策の一部としてそこから生まれたものだ。「コンピュータマウスの発明者」としてだけ記憶するのは、文章を書くことの発明者を鉛筆の発明者と呼ぶようなものだ
最近、50・60・70年代のコンピューティング、特にサンフランシスコに関連する本を多く読んでいるので、ここ数週間Engelbartのデモを断続的に見ていた。今はUSBを通じてしかその時代と相互作用できないとしても、その歴史に「近い」と感じられるのは本当に驚くべきことだ
ごく小さな脚注的修正だが、机やオフィスだけでなく、デモ中にEngelbartが座っている椅子もHerman Millerが特別に設計したものだ
AndroidフォンでTwiddlerを定期的に使っている。デスクトップで使うアプリケーション、たとえばEmacsまで完全に操作できるようにしてくれる: https://www.mytwiddler.com/
スイッチ入力のデバウンスに100msの遅延を入れるより、RC回路と六角インバータを使う方式を強く勧めたい。十分すぎるほど時間を無駄にしてきた結果、最高のソフトウェアデバウンスは抵抗数本とコンデンサ数個だった
https://mayaposch.wordpress.com/wp-content/uploads/2018/06/d...
ただしKenが言っていた100msの遅延は別の目的、つまり1文字を構成するすべての指入力が検出されるまで待つためだったのだろう。より良いアプローチは、文字を登録する前にキーの1つが離されるまで待つ方式だと思う。Engelbartもそうしていたのではないか? Kenが使いにくいと感じた理由は、このタイミングベースのアプローチにあったのかもしれない
Baudotの元々のコードキーボードは、文字が電信線に送信されるまでキーを機械的にロックしておく方式だったと理解している。電信技師は、固定ボーレートで自分の文字と同僚たちの文字がインターリーブされて送信されている間に、次の文字を入力する時間があった
コードキーボードは、RSIの問題を減らし、姿勢をより良く保ちながらコンピュータを操作するのに向いているのではないかと、時々思う。フルキーボードよりもずっと場所を取らないし。
デモの録画や関連記事を見ると、keysetとマウスは別々に使うより、一緒に使ったときのほうがより強力な効果を発揮していたように思える。ただ、多言語の書き手がどれほど使いこなせるのかは分からない。コードが英語のような特定言語の特性に依存しているのか、例えばxよりaをよく使う頻度に合わせてコードの順序が決められているのかが気になる。他の言語でも同じコードをそのまま使えるのか、それとも最適化版が必要なのかも疑問だ。
Engelbart式コードキーボードは英語圏の外にはほとんど広がらなかった。しかし関連する発明である速記キーボードは、法廷記録や生放送字幕に使われ、普及した。これらの装置はテキスト入力戦略がまったく異なる。操作者は一度に1音節全体を音声的に入力し、機械が辞書に基づいて発音を解釈する。そのため英語では同音異義語の誤りが最も一般的で、あとから文脈で修正できる。熟達するには多くの訓練と練習が必要で、言語依存性が非常に強い。
Douglas Engelbartが共同発明者のValerie Landauとあるブロガーに、二進数をテキスト入力に使う方法を説明している動画: https://www.youtube.com/watch?v=DB_dLeEasL8
各指に1、2、4、16のような値を割り当てれば、組み合わせで63まで作ることができ、そうしてAからZまで入力するという説明: https://news.ycombinator.com/item?id=43454343
商用入力デバイスのTapXRも、マウス兼ジェスチャーポインティングデバイスとして動作する。Bluetoothキーボードとマウスの両方として動作するウェアラブルなタップグローブで、まだ使ったことはないがかなり格好よく見える: https://www.tapwithus.com/ / https://www.youtube.com/watch?v=sdm8FcsKeoM
TapXRは、PC、スマートフォン、タブレット、SmartTV、プロジェクター、VR、AR、XRとやり取りする統合的な方法をうたい、片手で毎分80語以上、最大毎秒10文字の入力、150以上のカスタムコマンド、2500以上のTapレイアウト、8時間バッテリーを掲げている。
約7年前の初期バージョンについて書かれた投稿もある: https://news.ycombinator.com/item?id=17122717
当時Tapという新しいデバイスを見つけた。Bluetoothキーボードおよびマウスとして動作するウェアラブルなタップグローブなので、EngelbartとValerie LandauのHandWriterグローブの現代版のように見えた。iOS、Android、Unity3D SDKがGitHubに公開されていた: https://github.com/TapWithUs
うまく動くなら、VR、モバイル、デスクトップなど、どこでも使えるTapPieMenusを作りたいと思った。触覚フィードバックを入れて、ピエゾブザーのようなもので指を振動させて文字入力を訓練したり、装着中に静かで目に見えないメッセージをこっそり綴るように伝えたりすることも可能そうだ。LinusTechTipsのレビューもあった: https://youtu.be/8za_4g5zCOM
コードキーボードはいつも人間工学上の悪夢のように見えた。すべてのキー入力で複数の指を動かさなければならないので、反復動作をむしろ掛け算しているようなものだ。