キーパットを配線した
前回二乗マトリクスの実験用のキーパットを設計した。
今週はそれを印刷した。
意図した通りの感じになった。
今回は二乗マトリクスの実験用なので、 真面目に配線計画を考えて、その通りに実装した。
kicadで計画。
実装するとこんなかんじ。
半田付けしながら動画をとったので、後で編集しよう。
ソフトウエアがちょっと困った。
いままで二乗マトリクスの時は、1からソフトを書いていたので、キーボードとして使うには敷居がたかかった。 今回はQMK Firmwareを使う事を目標にした。
理論上は、MATRIX_ROW_PINSとMATRIX_COL_PINSに同じ値を設定すれば、 あとはQMK Firmwareがうまいことやってくれるはずだった。
しかし、実際やってみたら、QMK Firmwareが起動せず、 常にブートローダが見える状態になってしまった。
いろいろやってデバッグした。
- COL側を全部使ってないピンにしたら動く。
- 全部といわず最初の値だけ別のにしたら動く。
- select_row関数の中身をコメントアウトしたら動く。
- row idとcol idが同じ時は読まないようにしたら動く。
- row idとcol idが同じ時は読んだ後に値をすてるようにしたら動く。
- キーが沢山押しっぱなしだと起動しない機能があるのかもと思ったが、他のキーボードではそんな事はおこらない。
どこで死んでるか、2分探索しようとしたけど、 USBのHIDコネクションが確立してないから、 標準のデバッグログは使えない。
3時間ぐらい悩んでいたが、 ふと、「何かキーを押しながら通電したら特別な事をする機能」がQMK Firmwareにあったなと思い、 マニュアルをみたら、ビンゴだった。
起動時にマトリクスの左上のキーが押されていたら、 ブートローダに逆戻りするbootmagic-liteという機能があって、 新しいキーボード用テンプレートでは最初から有効になっているみたい。
二乗マトリクスでは、常に左上から右下の対角線上のキー(がある場所)は押されている扱いになるので、 左上のキーも押されたと認識されているみたい。
BOOTMAGIC_ENABLE = no
と設定したら正常に動きだした。 オフにするより、設定で横にズラすべきかも。
これはひどい落とし穴だ。