팁 & 테크
안녕하세요, 여기서 눈팅하면서 정보만 얻어가다가 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 의 매력을 아셨으면 하면서!! 글을 마칩니다ㅎㅎ
블루투스 연결 이후 동작을 제대로 하지 않는 문제
이 문제의 해결 방법은 http://www.tmk-kbd.com/tmk_keyboard/editor/ 이 사이트로 들어가신 뒤에
bluetooth 항목을 눌러서 들어가신뒤 파일을 만드시면 해결 됩니다.
긱핵 사이트의 경로는 USB용을 만드는걸로 되어있더군요.
그래서 USB는 되는데 bluetooth는 되지 않았습니다.
키맵 펌웨어는 직접 빌드하는 것보다 tmk 사이트에서 빌드하는것이 hex파일이 바로 다운로드가 되어
더 쉽고 빠르기 때문에 사이트 사용하는걸 추천 드립니다.
TMK 보드에 올리는 것은 dfu-downloader 가 3줄이면 빌드가 되어 편하기 때문에 저도 사용중입니다.