- 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 애플리케이션 중 하나였지만, MacWrite와 Microsoft Word 같은 GUI 기반 워드프로세서와 경쟁하며 큰 영향을 주지 못함
"The Mother of All Demos"라는 이름의 경로
- "The Mother of All Demos"는 Engelbart의 1968년 시연 당시 붙은 이름이 아님
- 표현의 뿌리는 Gulf War 시기의 "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개 데이터 입력에 연결함
- 공통선은 접지에 연결함
- Teensy 입력은 내부 풀업 저항을 쓸 수 있어 기본값은
1, 키가 눌리면0이 됨
- 예외는 왼쪽 끝 버튼과 접지 사이에 있는 것으로 보이는 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살 아이도 일주일 안에 배울 수 있다고 봤지만, 실제 짧은 사용에서는 물리적으로 매우 어렵게 느껴짐
- 네 손가락을 동시에 누르는 동작이 어렵고, 특히 약지를 제외한 모든 손가락을 누르는 조합이 가장 까다로웠음
- 여기에 마우스 버튼 하나나 둘을 동시에 조합하면 어려운 피아노 악보를 초견으로 읽는 느낌에 가까웠음
- Xerox PARC의 David Liddle은 키셋이 아주 숙련된 시스템 프로그래머를 벗어나면 사람들을 느리게 만드는 경향이 있었다고 말함
- Alto 프로그램들도 키셋을 코드 입력용 타이핑 장치라기보다 기능 키처럼 다루는 경향이 있었음
- USB 인터페이스 코드는 keyset-to-usb-interface에 공개돼 있음