* 이제 갓 조립과 펌웨어 설정을 마친 상태라 사용기보다는 조립기에 가깝습니다. 그래서 점수는 기재하지 않습니다.

* 완성된 사진은 여기 (http://www.kbdmania.net/xe/index.php?mid=photo&page=2&document_srl=8697215 ) 에서 보실 수 있습니다.


(1) 구입에서 조립까지


Typematrix 를 떠나보내고 어떤 키보드를 사야 할까 고민을 조금 했다. Typematrix에서 가장 마음에 들지 않았던 멤브레인은 피하고 싶었고, 완전히 적응하지는 못했지만 정방형의 키배열은 다시 한번 더 사용해 보고 싶었다. 비교적 구입이 수월한 제품들을 찾아보니 Truly Ergonomic 이나 Kinesis Advantage, 마지막으로 Ergodox 정도로 간추릴 수 있었다. 인체공학적인 배열을 가진 키보드라는 점에서는 동일하지만 세세한 부분으로 들어가면 각각의 차이가 제법 커서 쉽게 결정하기가 어려웠다. 당장 키보드가 급하게 필요한 것이 아니었고, 기왕 시간과 비용을 쏟는 김에 조금 더 모험을 해 보자는 쪽으로 마음이 기울었다.

TypeMatrix
TypeMatrix 2030 무각

Ergodox는 Kinesis와 같이 왼쪽 손과 오른쪽 손용 배열이 완전히 나뉘어진 분리형의 인체공학적 키보드에 속한다. Kinesis나 Truly Ergonomic, 혹은 Typematrix와 같이 정방형의 키 배치를 사용한다는 점도 일반적인 키보드에 비교해서 두드러지게 차이가 나는 부분이다. 기능적인 부분을 제외하고도 Ergodox는 상용으로 판매되는 다른 제품과는 달리 설계가 완전히 공개되어 있다는 점에서 큰 차이가 있다. 하드웨어의 설계는 GPL v3라이센스이고, 기본 펌웨어는 MIT 라이센스로 공개되어 있다. 덕분에 개인적인 취향에 맞춘 키 배열 펌웨어의 제작과 같은 수정에서부터 마음먹고 수고를 보탠다면 갖가지 취향에 따른 키보드를 만들 수도 있다. 반대로 특정한 회사가 설계하고 완제품을 만들어 판매하는 형태가 아니라 개인이 부품을 구해서 조립해야 하는 까닭에 마냥 쉽게 접근하기 어려운 구석이 있다. 처음 여러 모델가운데 Ergodox를 마지막 선택지로 두고 고민했던 것도 이 부분이 가장 크게 작용했다.

Ergodox의 홈페이지에는 완성에 필요한 부품 목록 일체와 하우징의 설계 도면 및 펌웨어를 제공하고 있다. 입맛에 맞는 형태로 완성하려는 사람들은 이 목록을 기반으로 3D 프린터나 기타 가공으로 하우징을 만들거나, 부품을 개별 구매하는데서부터 조립 단계를 시작할 수도 있다. 개인적으로는 조립에 대한 걱정만으로도 신경이 쓰이는 상황이라 부품을 모으는 단계에서부터 진을 빼고 싶지는 않아서 조금 더 편한 방법을 선택하기로 했다. Massdrop (회원 가입 필요)이 가장 잘 알려진 구입처로 정기적으로 부품을 구매할 사람들을 모아 일정 인원을 확보하면 공동 제작을 한다. 구입을 고민하고 있던 참에 마침 이번 회차 구매 인원을 모집하길래 망설임없이 선택했다.

0GqjCPSm8bX-54hIPJN7oyCCGr72rEEgVOctVHP0Ktw=w986-h1314-no
도착한 택배 상자.

Massdrop에서 구입할 수 있는 부품은 Ergodox 하나를 완성할 수 있는 부품의 모음이다. 기판과 다이오드, 저항 및 컨트롤러에서부터 아크릴로 구성된 하우징까지를 포함하는 기본 세트에 더불어서 개인의 취향에 따라 선택할 수 있는 체리 키 스위치 및 무각 형태의 키캡까지 구매할 수 있다. Massdrop 페이지에 뜨는 가격의 경우 최저 199$라고 표시되어 있는데, 이 가격은 키캡이 빠져있는 가격이고 스위치 선택에 따라 추가비용이 또 들어갈 수 있다. 무각 대신 조금 특이한 키캡을 사용하고 싶은 욕심이 있었기 때문에 키캡은 제외하고 구매신청을 마쳤다. 일반적인 상품처럼 주문후 바로 배송이 되는 것이 아니고 신청 마감후 제작에 들어가기 때문에 실제로 배송이 시작될 때 까지 꽤나 긴 시간이 소요된다. 9월 중순쯤 구매 신청을 했는데 제작이 완료되고 배송이 완료된 것이 12월 초순이니 어림잡아 석 달 정도가 걸린다고 생각하면 크게 차이가 없을 듯 싶다.

배송을 시작한다고 알림을 받을 즈음부터 조립을 위한 장비들을 구비하느라 다소 시간을 보내야 했다. 학부 실습시간에 잠시 손만 대 본 다음부터 지금까지 납땜을 해 본 적이 한 번도 없었기 때문에 인두부터 시작해서 기본적인 장비를 하나씩 구매하고 납땜 연습용 키트도 두어개 정도 사서 본격적인 조립에 들어가기 전에 연습을 조금 해 보았다. Massdrop에서 제공하는 부품에 들어있는 다이오드는 surface mount 방식의 칩다이오드인데다 크기도 생각보다 작아서 연습을 하면서도 제대로 완성할 수 있을지 걱정을 했지만 다행스럽게 큰 문제없이 마칠 수 있었다.

조립은 Massdrop에서 제공한 설명서를 순서대로 하나씩 따라서 진행했다. 설명서가 꽤 꼼꼼하고 자세하게 적혀있는데다 사진까지 잘 첨부되어 있어서 차근차근 읽어보면 특별히 어렵거나 문제가 될 만한 구석은 없다. 조립 전에 여러 블로그들에서 조립의 난이도가 비교적 높지 않다는 이야기를 보고 의아했는데 막상 직접 따라해 보니 수긍할 수 있는 이야기였다. 가장 시간이 많이 들고 힘든 부분은 다이오드와 키 스위치를 납땝하는 것으로, 어렵다기보다는 단순 작업을  여러번 반복해야 하기 때문이다. 각 키 하나당 스위치 하나 와 다이오드 하나씩을 납땜해야 하고 전체 키가 약 80여개 정도니 대충 300번 정도 납땜을 해야 한다. 그 외에 USB 케이블을 벗기는 것과 같은 작업들에서 또 시간을 잡아먹었다. 설명서에서도 충분히 언급되어 있는 부분들인 다이오드의 극성, TRRS 커넥터의 와이어링이나 마지막으로 컨트롤러의 USB 와이어링 정도만 실수하지 않으면 문제가 없다. 납땜을 마치고 기본 펌웨어를 올려본 다음 키 입력을 테스트해보니 딱 한개가 동작하지 않아서, 다이오드를 교체하고 새로 납땜을 했더니 정상적으로 입력이 되었다. 입력을 확인하고 나머지 하우징을 씌워서 첫 자작 키보드를 완성.

칩다이오드 납땜
칩다이오드 납땜. x:2,3열이 납땜을 마친 상태이고 4열부터는 아직 납땜하지 않은 상태. 납땜의 결이 고르지 않다.
저항 납땜 후 컨트롤러 납땜 준비중.
저항 납땜 후 컨트롤러 납땜 준비중.
스위치 납땜 시작
스위치 납땜 시작
스위치까지 모두 납땜한 기판 후면.
스위치까지 모두 납땜한 기판 후면.

여분의 체리 스위치를 가지고 있지 않은 상태라 따로 주문한 키캡이 도착할 때 까지는 실제 사용은 하지 못하는 상태로 기다려야 한다. 여기저기 둘러보다가 Signature Plastics에서 진행하는 공동제작에 참여해서 제작이 끝나기를 기다리고 있는 중.

키캡은 아직 없는 상태로 완성. 양쪽 손의 연결은 3.5mm TRRS로 연결하고, 키보드와 PC는 미니 USB를 이용한다.
키캡은 아직 없는 상태로 완성. 양쪽 손의 연결은 3.5mm TRRS로 연결하고, 키보드와 PC는 미니 USB를 이용한다.

키보드의 실용성은 아직 사용이 불가능하니 논외로 치고 구입에 들어가는 노력만 생각을 해 보아도 쉽게 도전할 수 있는 경우는 아니라는 생각을 한다. 199$의 기본 부품 가격만 해도 어지간한 키보드의 가격인데다 서너달 정도의 배송을 기다린 다음 하루 정도를 온전히 쏟아 직접 조립해야 한다. 이런저런 시도를 해 보는 데서 재미를 느끼는 사람들이라면 해 볼 만한 선택이지만, 키보드의 배열과 사용성에 관심을 가지고 즉시 구입할 수 있는 제품을 원하는 사람이라면 기성품을 선택하는 쪽이 비용면에서나 시간 면에서나 더 나을 수 있다. 직접 동작하는 물건을 완성할 수 있다는 성취감은 확실히 기성품을 구입하면서는 느낄 수 없는 기분이기는 했다.

(2) 키 배열 설정하기

Ergodox를 조립할 때 마지막으로 밟게 되는 과정이 키보드의 펌웨어를 Teensy 컨트롤러에 업로드하는 것이다. 기본적인 작동 여부를 확인하려면 미리 빌드되어 있는 펌웨어를 바로 업로드하면 된다. 이 펌웨어는 Qwerty 기반의 기본적인 키 배열을 지원하고 있지만 그대로 이용하기에는 다소 아쉬운 점이 있다. 조립한 키보드가 정상적으로 동작한다는 것만 확인한 다음 펌웨어를 수정해서 원하는 형태의 키 배열로 변경하기로 결심했다.

Massdrop에서는 정기적으로 하드웨어를 공동제작하는 것 뿐 아니라 웹 기반으로 펌웨어를 수정할 수 있는 어플리케이션도 만들어 두었다. 사용 방법이 어렵지 않으면서 Ergodox가 지원하는 대부분의 기능을 지원하는 것이 장점이다.

massdrop_configurator
Massdrop의 설정 UI. 직접 파일을 뜯어고치는 것 보다 훨씬 쉽다.

일반 키의 경우 사용하고자 하는 배열 (Qwerty / 기타)에 따라 선택하면 문제가 없다. 신경써야 할 부분은 그 외의 키들이다. 키의 배치가 엄지의 사용을 강력하게 권장하는 형태로 되어 있고 위치가 기존의 키보드와 상이하기 때문에 특수키들을 어떻게 배치할 지 취향에 따라 생각해 볼 필요가 있다. 두 번째로 신경써야 할 것은 Layer의 구분. 전체 키 갯수가 76개로 텐키리스보다 적은 대신 하드웨어적으로 Layer 기능을 제공하고 있다. 어설프게 비유하면 노트북의 Fn키와 유사한 형태로 동작하는 키를 할당해서 배열 사이를 이동할 수 있게 한다. 0번 배열에 보통의 키를 배열한 다음 상위 층에 다른 키들을 할당해 두면 된다. 전환 키의 경우 Shift키나 Fn키처럼 누르고 있을 때만 동작하게 하거나, Caps lock처럼 켜고 끄게 할 수도 있다.

새 배열을 이용해 완성한 펌웨어를 업로드하고 시험해 보면서 몇 가지 아쉬운 부분이 눈에 들어왔다. 먼저 음량 조절과 같은 특수 키가 동작하지 않았다. Massdrop의 어플리케이션에서 사용하고 있는 펌웨어는 Ergodox의 기본 펌웨어인 Ben Blazak의 것을 사용하고 있기는 하지만 최신 버전이 아닌 관계로 몇몇 기능이 동작하지 않는다. 음량 조절도 그 '몇몇'에 포함되는 기능으로 현재로서는 Massdrop의 어플리케이션으로는 키는 할당되어 있더라도 동작은 불가능하다.

다음으로 아쉬웠던 것은 LED의 활용도가 떨어진다는 점으로, 배열을 설정하면서 보통의 키보드에서 사용하는 LED관련 키들 (Caps lock, Num lock, Screen lock)을 모두 빼버렸기 때문에 LED가 남게 되었다. 사용 연습을 하면서 Layer를 바꿀 때 마다 헷갈리는 경우가 있어서 기본 배열이 아닐 때 LED를 켜 보면 좋겠다는 생각을 하게 되었다. 다행히 검색을 좀 해 보니 Atmel 기반 컨트롤러용 키보드를 위한 TMK keyboard 펌웨어를 Ergodox용으로 포팅한 펌웨어가 있었고 기능 또한 비교적 준수해서 이 펌웨어를 사용해서 모자란 부분을 채워보기로 마음먹게 되었다.

주로 사용하는 개발 환경이 전부 윈도우라 펌웨어를 빌드하기에는 설정이 다소 귀찮은 부분이 있어서 리눅스 VM을 하나 만들고 그 안에서 빌드를 진행했다. 소스를 받아 보면 Ergodox용으로 Lufa / Pjrc용의 Makefile이 있다. 첨부된 문서는 Lufa를 기준으로 빌드하도록 설명이 되어 있어서 일단 Lufa로 진행. 컴파일에 필요한 패키지 (avr-gcc, avr-binutils, make, avr-libc등) 만 설치하면 빌드에는 전혀 문제가 없었다. 빌드 뿐 아니라 TMK 펌웨어는 미디어 키도 정상적으로 작동해서, 펌웨어만 교체해서 첫 번째 문제는 해결.

기본 펌웨어나 TMK펌웨어 모두 자판 배열의 수정은 배열을 저장하는 헤더 파일내에서 할 수 있도록 얼개가 짜여져 있다. LED의 경우는 배열에 해당되는 부분이 아닌 까닭에 동작을 담당하는 부분을 수정해야 한다. 동작을 담당하는 코드 위치만 확인하고 간단하게 코드를 추가해 주면 끝. 자판 배열의 수정은 어렵지는 않지만 일일이 손으로 각각의 키 코드를 바꾸어 주어야 한다. 특별한 문제가 없다면 Massdrop의 설정을 이용하는 것이 시간이나 효율면에서는 훨씬 낫다.

led
LED가 단색이라 단순히 0번 층이 아닐때 무조건 켜는 것으로 정했다.

한글 자판 배열은 세벌식(최종) 으로 넘어온 지 꽤 긴 시간이 지났지만 영문 배열의 경우 아직까지 Qwerty를 사용하고 있다. Typematrix가 하드웨어적으로 Dvorak과 Colemak 배열을 지원해서 구입 후 전환을 시도해 봤지만 결국 포기했었다. 영문 배열을 익히는 것보다도 한글 자판 배열이 바뀐 영문 자판에 따라가버리는 것이 사용을 포기하게 된 결정적인 이유. 새나루와 같은 입력기들이 그러한 문제를 해결하는데 도움을 주기는 하지만 완전히 문제가 해결되는 것은 아니었다.

이번 Ergodox의 배열을 생각하면서 그 때 겪었던 문제를 깜박 잊었다가 Colemak을 주 배열로 설정한 다음에야 다시 깨닫게 되었다. 배열을 되돌릴까 생각하다 기왕 입맛대로 동작을 수정할 수 있는 키보드를 구했으니 이 문제도 해결해 보자 싶었다. TMK 펌웨어는 이미 정해진 보통의 키 입력 외에도 사용자가 입력을 지정할 수가 있어서, 이 부분을 실마리로 이용해 보기로 했다. 몇몇가지 방법을 고민한 끝에 추가 배열로 Qwerty를 하나 더 할당하고 한영키 대신 Qwerty배열로 전환 후 한글 상태로 변환하는 키를 만들어서 문제를 해결했다. 키보드 하드웨어에서 배열을 바꾸는 셈이라 윈도우의 IME쪽 설정이 별도로 필요 없이 깔끔하게 동작한다.

마지막으로 해결할 문제는 펌웨어 업로드를 조금 더 쉽게 할 수 있는 특수 키의 동작이 되지 않는 부분. 현재 Lufa용의 펌웨어 빌드는 미리 정의된 특수 키 중 하나인 Boot키가 동작하지 않는 문제가 있다. Boot키는 Teensy 컨트롤러를 재부팅하고 펌웨어를 다시 올릴 수 있는 부트로더를 동작하는데 쓰이는 키. 컨트롤러 자체에 붙어 있는 버튼을 사용하면 되지만 조금 번거로워서 내친 김에 여기에도 손을 대 보기로 했다. Lufa용으로 같은 문제를 겪고 있다는 이슈가 있었고 이전 코드에서는 작동했다는 이야기가 있어서 Pjrc용으로 펌웨어를 빌드해 보았더니 제대로 작동한다. 단 원본 TMK 펌웨어에서는 수정된 문제로 보이는데, Ergodox용으로 fork된 소스에서는 몇몇 구문이 수정되어 있지 않아 그대로 빌드할 수가 없다. 원 소스를 참고해서 그대로 옮겨주면 쉽게 해결된다.

아래는 (일단) 완성한 현재 배열의 모습. 익숙해질 때 까지는 꽤나 많은 연습이 필요할 것 같다.

layout