自作キーボードをQMK Firmwareに対応させる

pro microとUnix系OSの使用を前提として話をすすめる。

まずはcloneしてnew_project.shでテンプレートを作る。

❯ git clone https://github.com/qmk/qmk_firmware
❯ cd qmk_firmware
❯ util/new_project.sh your_keyboard_name
❯ cd keyboard/your_keyboard_name

次にconfig.hを編集。 MATRIX_ROWSMATRIX_COLSをそれぞれ数合わせ。

#define CATERINA_BOOTLOADERを追加しておくとRESETキーが使えるようになる。

MATRIX_ROW_PINSMATRIX_COL_PINSは以下の画像の紫色の背景のP〇〇がポート番号なのでそれらを列挙。

f:id:kumatoki:20171030180002p:plain

次はお好きにkeymaps/default/keymap.cを定義。

たぶんpro microではピンの数が足りないのでIO Expanderを使ったり、pro microを2つ使ったりして、その2つを通信する必要があるわけです。それらがめんどくさいという方はteensyを使うといいかもしれない。ピン数が多くて事足りるかもしれない。

IO Expanderを使うのであればまずはi2cかSPIの実装が必要です。 さらに使用するIO Expanderの使い方を覚えなくてはいけません。 MCP23017と言うIO Expanderを使うのであれば、こちらの実装を借りると良いかもです。

alter

pro microを2つ使うのであればlet's splitの実装が参考になるかもしれません。

lets_split

❯ cd ../..
❯ make your_keyboard_name:default
❯ avrdude -p atmega32u4 -P /dev/tty.usbmodemXXXX -c avr109 -U flash:w:your_keyboard_name_default.hex

qmk_firmwareディレクトリトップに戻ってmakeします。

/dev/tty.usbmodemXXXXはXXXXに数字が入ります。

ls /dev/tty.usbmodem*としてpro microと対応している番号を探しましょう。

もしくはpro microをリセットさせてからlsすると出てくるかも。

書き込みが成功したらとりあえずQMKに対応です

追記。

rule.mkに以下を追加しましょう。 そうすればmake your_keyboard_name-avrdudeで書き込みまでやってくれます。 

avrdude: build
    ls /dev/tty* > /tmp/1; \
    echo "Reset your Pro Micro now"; \
    while [ -z $$USB ]; do \
      sleep 1; \
      ls /dev/tty* > /tmp/2; \
      USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \
    done; \
    avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex

.PHONY: avrdude