안녕하세요, 여기서 눈팅하면서 정보만 얻어가다가 TMK 컨트롤러 세팅에 성공한 사람이 또 있다... 를 알려드리려고 글 씁니다.


최근에 큰맘먹고 HHKB Type-S 를 질렀는데, 제가 vim 덕후여서 이동키 위치를 바꿀 수 있다면... 하고 아쉬움이 많았는데


마침 TMK 컨트롤러에 대한 정보를 키보드매니아에서 얻게 되어서 결국 컨트롤러를 지르고 말았습니다.


이 글은 다음번 TMK컨트롤러를 구매하시는 분들에게 정보가 되고자 텍스트로 부품구매 정보 등등을 요약해 두려는 목적입니다.


틀린 내용이나 더 좋은 내용은 댓글로 지적해 주시면 반영해서 수정하도록 하겠습니다.



1. TMK Controller 에 대한 가장 메인 정보 페이지


https://geekhack.org/index.php?topic=71517.0

이 thread 의 HASU 라는 사람이 일본에서 열심히 개발한 보드입니다. HHKB 용으로는 다섯 가지 종류의 보드를 지원합니다.

USB Controller for Pro2(PD-KB400)(Type-S is also supported.)
USB Controller for JP(PD-KB420)(Type-S is also supported.)
USB Controller for Pro1(PD-KB300)
Bluetooth Controller for Pro2(PD-KB400)(Type-S is also supported.)
Bluetooth Controller for JP(PD-KB420)(Type-S is also supported.)

* 최근에는 (2017/4/5) FC660C 용으로 컨트롤러 보드를 만들어서 공동구매를 시작했습니다. 관심있으신 분들은 확인하세요.

https://geekhack.org/index.php?topic=88720.0



2. 컨트롤러 구매 방법


저는 Bluetooth Controller for Pro2 를 구매하였습니다. hasu@tmk-kbd.com 계정으로 메일을 보내면 다음과 같이 답장이 옵니다.


그러면 Paypal 링크가 메일로 오게 됩니다. 결제를 하고 나면 약 3일 정도 후에 shipping 관련 메일이 옵니다.


일본 우체국을 통해 등기로 오게 되고, 링크를 들어가면 배송 현황이 나옵니다. 저는 7일 정도 걸려서 받았습니다.


...위 과정에 대한 각각의 캡쳐를 Ctrl+C,V 로 붙여서 잘 들어갔구나 했는데, 죄다 날아가 버리네요ㅜㅜㅜ 흑흑



3. 블루투스 버전: 배터리 및 연결 선 정보


블루투스 버전의 경우, 배터리는 포함이 되어 있지 않습니다. 어떤 배터리를 사야 하나 했는데, 다행히 Lufiel 님께서 최적의 배터리를 찾아두셨습니다.


http://www.kbdmania.net/xe/?mid=photo&document_srl=9266750


위 게시물의 배터리를 사서 사용하였고, 거의 완벽하게 딱 들어맞습니다. 성공기는 요즘 TMK 세팅에 중독되신(?) 매불매향님의 글에 잘 나와 있습니다.


http://www.kbdmania.net/xe/tipandtech/9408752


배터리: http://www.ebay.com/itm/261625368941


역시 등기로 옵니다. 이 배터리에는 연결선이 포함되어 있지 않아, 연결선을 따로 구매해야 합니다. 저는 디바이스 마트에서 같은 규격의 연결선을 찾아서 (다른 부품 사면서 같이...) 구매하였습니다.


연결선: http://www.devicemart.co.kr/1153489


이후 납땜해서 배터리와 연결선을 연결하였습니다. 매불매향님과 Lufiel 님께서 구매하여 사용하신 연결선은 흑백이 뒤바뀌어 있다고 하는데, 위 연결선은 그런 문제는 없었습니다. (문제 생길까봐 정말 열번은 더 확인했네요ㅎㅎ;;)


** 그런데 위 연결선은 TMK 컨트롤러 보드와 좀 심하다 싶을 정도로 꽉 물리기 때문에, 한 번 넣으면 못 뺀다고 각오하고 넣으시는 것이 좋습니다... 저는 시험삼하 한 번 넣었다가 빼기가 너무 힘들어서 차라리 그 부분을 새로 납땜할까 하다가, 핀셋으로 밀어내서 겨우 꺼냈습니다. 더 잘 연결되는 놈을 찾으시면 알려주세요 ㅜㅜ **



4. HHKB 에 실제로 배치!


이 부분은 사진이 잘 나와 있는 매불매향님의 게시글을 참고하시면 될 듯 합니다.


http://www.kbdmania.net/xe/tipandtech/9408752



5. 커스팀 키맵핑 펌웨어 만들기


사실 이부분에서 굉장히 헤메어서 이 글을 작성하게 되었습니다...ㅜㅜ


커스팀 키맵핑이 반영된 .hex 파일을 생성하는 방법은 두 가지가 있는데, 한 가지는 웹사이트에서 간편하게 만드는 방법과 직접 코드를 컴파일하는 방법이 있습니다.


5.1 웹사이트에서 만들기


해피해킹 Pro2 블루투스 버전의 경우, 웹사이트에서 hex 파일 만드는 사이트는 http://www.tmk-kbd.com/tmk_keyboard/editor/unimap/?hhkb_rn42 입니다. 문제가 없는 경우, 이 사이트에서 hex 파일을 다운받아서 바로 다음 단계에서 설치하면 됩니다.


5.2 직접 컴파일하기 (Windows)


여기부터는 위의 사이트에서 다운받는 방식을 사용하시는 분들은 건너뛰셔도 됩니다.


그런데 저의 경우, 문제는 위 웹사이트에서 펌웨어를 빌드하는 버전이 좀 옛날 방식이라고 여기저기 경고가 되어있는데, 그 때문인지 제 키보드에서 매핑은 잘 되지만 블루투스 연결 이후 동작을 제대로 하지 않는 문제가 생겼습니다.


때문에 혹시 직접 코드를 빌드하면 잘 동작하려나... 하고 코드 컴파일을 하게 되었습니다. 리눅스 우분투에서 한 번 시도했다가 실패하고, 윈도우에서 성공하였습니다ㅜㅜ. 약간의 linux 사용법에 대한 지식은 있어야 합니다... 일단은 시간이 없어서 간략하게만 정리하면 다음과 같습니다.

  • 설치할 것들 (Windows 기준입니다)
    • Cygwin 설치: 설치하는 중간에 추가 설치 선택하는 곳에서 'make' 도 선택해서 설치해 줘야 함
    • https://github.com/tmk/tmk_keyboard 의 코드를 받거나 tmk_key-master 압축파일을 다운받아 풀어 둠
    • avr8-gnu-toolchain 을 적절한 폴더에 다운받아서 풀어둠
  • Cygwin을 켠 후, 코드를 컴파일 하는 방법
    • cygwin 에서 원래 내 윈도우 폴더를 보려면 /cygdrive 를 들어가면 됨. (C:\, D:\ 드라이브 등이 보임)
    • avr8-gnu-toolchain/bin 을 ${HOME}/bin 에 softlink 걸어 줌
    • .bash_profile 에서 PATH에 ${HOME}/bin 을 추가하는 구문에 주석 해제 (이 두 과정을 통해서 avr-gcc.exe 등이 실행가능해야 빌드가 가능)
    • 풀어 둔 tmk_key-master 폴더를 찾아가서 keyboard/hhkb 안에 들어감
    • 기존 파일 참고해서 커스텀 키맵파일 keymap_XXX.c 직접 만듦
    • make -f Makefile.rn42 KEYMAP=XXX
    • 위 명령어를 치게 되면 결과물로 hhkb_rn42.hex 생성됨. (Keymap 이름과 상관없이 같은 이름으로 나옴)

위의 정말 복잡한 과정을 통하면 겨우겨우 제대로 된 hex 파일을 얻을 수 있게 됩니다. 추가로 웹사이트에서 만들 때보다 더 커스터마이징 가능한 부분이 더 많다고는 하는데, 전 간단한 매핑만 해서 이렇게 노력해서 빌드하는 이점이 없네요...ㅎㅎㅎ 저에겐 블투가 되고 안되고의 크리티컬한 문제여서 어쩔 수가 없습니다 ㅜㅜ



6. 키보드에 .hex 파일 굽기


6-1. Atmega 드라이버 설치


https://github.com/tmk/tmk_keyboard/wiki/Driver-install-on-Windows


위 페이지를 참고하여서 드라이버를 설치하여서, HHKB DIP스위치 부분의 버튼을 눌렀을 때 윈도우가 인식하도록 해 줍니다.


6-2. 굽기


http://dfu-programmer.github.io/


에서 dfu-programmer 를 받아서 압축을 풉니다. (FLIP 을 이용하면 GUI로 할 수 있다고 하는데, 저는 이 방법을 썼습니다.)


dfu-programmer.exe 가 존재하는 곳에, 위에서 만든 .hex 파일을 둡니다. 웹사이트에서 만들었으면 보통 unimap.hex 이고, 직접 빌드했으면 hhkb_rn42.hex 일 것입니다.


이후 윈도우 커맨드 창(cmd)이나 powershell 을 켜서 dfu-programmer 를 풀어 둔 위치로 이동합니다.


EX) cd Downloads/dfu-programmer


다음으로는 HHKB 키보드 뒷면의 원래 DIP 스위치 조절하는 곳에 있는 버튼을 누른 후, 다음 세 명령어를 칩니다. 아래는 unimap.hex 파일로 생성하였을 때 기준입니다.


./dfu-programmer.exe atmega32u4 erase --force
./dfu-programmer.exe atmega32u4 flash unimap.hex
./dfu-programmer.exe atmega32u4 reset


이러면 드디어 완성입니다! 저도 정말 험난한 과정을 통해서 겨우겨우 성공하게 되었습니다...ㅜㅜ



7. 마치면서


사실 어떻게 보면 미래의 제가 어떻게 했었는지 생각이 잘 안날 때 참고할 수 있는 수준밖에 되지 않을 수도 있습니다...ㅎㅎ


하지만 (특히 코드를 빌드해서) 진짜로 성공한 케이스에 대해서, 러프하게라도 모든 과정을 한글로 정리되어있는 자료가 잘 없어서 정리를 한 번 해보게 되었습니다.


더 정확한 정보가 필요하시면, 시간 날 때에 해당 부분에 대해서 스크린샷을 찍어가면서 보충해 보도록 하겠습니다. 당장은 더 이상 자세하게 기록하더라도 그만큼의 정보가 필요하신 분이 적어 보이시기 때문에...ㅜㅜ


다음 advanced 토픽으로는 어떻게 더 복잡하고 편한(?) 커스텀 키매핑 keymap_XXX.c 파일을 생성할 수 있는가에 대해서 공부하고 논의해야 할 텐데, 저의 목적인 "그냥 VIM과 같은 방향키만 있으면 만족!" 에 대해서는 더 복잡한 스킬은 필요하지 않아서 아는 바가 없습니다 ㅎㅎ;;


혹시 정말 유용해서 사람들이 꼭 알았으면 좋겠다 하는 키매핑 / 매크로가 있으면 공유해 주시면 감사드리겠습니다 (_ _)


더 많은 분들이 TMK board 의 매력을 아셨으면 하면서!! 글을 마칩니다ㅎㅎ