HID USB 키보드 펌웨어를 만들기로 했으니까 당연히 제일 먼저 HID USB 코드를 작성한다. 그래서 컴퓨터에 꼽아보고 HID 키보드로 인식되는 모습을 먼저 봐야 동기부여가 될 것이다. 프로그램을 만드는 작업은 일단 작업 내용을 바로바로 눈으로 볼 수 있어야 재미있게 할 수 있다.
나빌로스에 예제 코드 포팅 (멀티 플랫폼을 반만 고려해서 cortex-m3 삽질한 이야기)
Cortex-m3에 나빌로스를 포팅할 줄은 몰랐던 이야기.
키보드 펌웨어에 RTOS가 필수는 아니다. 하지만 내가 만든 RTOS(나빌로스: https://github.com/navilera/Navilos)가 이미 있으니 한번 실전 경험을 해야 하지 않겠는가하는 생각이 들었다. 그래서 직전에 만든 베이스 코드를 나빌로스에 포팅하기로 결정했다.
이 글은 커스텀 기계식 키보드를 하드웨어부터 펌웨어까지 모두 만들어본 이야기다. 첫 번째 이야기. 하드웨어 편.
원래는 그냥 기계식 키보드 하나 새로 사려고 했다. 그런데 기계식 키보드는 종류가 매우 많기 때문에 인터넷 검색질을 하면 할 수록 더욱 고르기 어렵게되는 문제가 있다. 어떤 키보드가 대충 80% 정도 마음에 드는데 다른 키보드는 부족한 20%를 채우고 있지만 나머지는 다 마음에 들지 않는 그런 상황이다. 그래서 생각했다. 그냥 내 마음에 드는 걸로 만들어 보는건 어떨까.
나빌입력기는 윈도우에서 동작하는 오픈 소스 한글 입력기 입니다. libhangul 자체를 윈도우에서 빌드하여 직접 사용하는 한글 입력기입니다. 그래서 한글 오토마타는 리눅스의 ibus, fcitx와 동일합니다. 모두 libhangul을 사용하니까요.
기존에 오픈 소스 윈도우 한글 입력기는 제가 조사한 범위에서는 새나루 입력기(https://kldp.net/saenaru/)가 유일했습니다. 새나루 입력기 역시 KLDP에서 활동하시던 개발자님들께서 만든 작품이지요. 새나루 입력기에 이어서 나빌 입력기는 사실상 두번째로 공개된 윈도우용 오픈 소스 한글 입력기입니다.
무슨 바람이 불었는지 삽질하다 말고 삽질 내용을 KLDP에 올리고 싶다는 생각이 들어서 키보드에 손가락을 올려 놓습니다. 별 내용은 아닌데 구글링하다가 답을 못 찾고 직접 삽질한 내용이라 기록을 남기는 의미에서라도 어딘가에 적어 놓고 싶었거든요. 그럴 공간이 제게 KLDP 말고 또 어디가 있겠습니까..
이 글을 시리즈로 올릴 생각은 없는데 그래도 혹시 모르니까 #1 이라고 번호를 붙였습니다. #2는 아마 또 쓸지 안쓸지 저도 모릅니다.
지난번에 제가 올렸던 글에서 밝혔던 대로 저는 요즘 취미 삼아 시간 나는 대로 RTOS를 하나 새로 만들고 있습니다. 타겟 보드는 보다 많은 사람들이 접근할 수 있도록 실물 보드를 쓰지 않고 QEMU를 사용합니다. 훌륭한 에뮬레이터이지요. 게다가 오픈 소스라서 어떤 문제가 생겼거나 원하는 동작을 이끌어 낼 방법을 찾지 못했을 때 마지막 수단으로 QEMU 자체의 소스 코드를 뜯어 볼 수 있어서 좋습니다. 이 글의 내용이 바로 그 QEMU 내부 코드 중 "아주 극히 매우" 일부를 분석해 본 내용입니다.
KLDP 블로그는 그다지 화려하지도, 많은 기능을 제공하지도 않지만 F/OSS, IT에 관련된 충실한 내용을 담고자 노력하는 분들이 함께 만들어 나가고 있습니다. 혹시라도 이곳에서 블로그를 운영하시고자 하는 분은 이곳으로 어떤 내용으로 운영하실지를 알려 주십시오. 확인 후 개설 여부를 결정하여 알려 드리도록 하겠습니다.