Quick7 を BLE Micro Pro で無線化した
はじめに断ると、結構イレギュラーな感じになったのでオススメはしない。
ロータリーエンコーダ付きのマクロパッドというものが欲しくなり、わりと直感的にカッコいいなというのと、必要十分なキー数だなというところで遊舎工房の Quick7 を購入した。これ自体は文字通りクイックに作れてとてもいいキットだった。慣れている人であれば1時間とかそこらで作れると思う。
さて問題はここからで、マクロパッドというものはホームポジションで固定的に使う普通のキーボードと違い、ポジションの自由度が高い。そのため使っているうちに有線が煩わしく思えてきた。幸いにして家には、使っていない BLE Micro Pro があったので、では無線化しようと思い至ったのだが、そう簡単な話ではなかった。
BLE Micro Pro との config 互換性
BLE Micro Pro (BMP) は自作キーボードでよく使われる QMK Firmware と高い互換性を持ったファームウェアを使用しているが、完全互換ではない。各種設定は QWK ではC言語で定義することになるが、 BMP ではこれを JSON 形式に変換したものを用いる。この2つが1対1には必ずしも対応していない。
Quick7 で具体的に問題となったのは、キースイッチの押下を感知する基盤のピン設定である。多くの自作キーボードでは、 MATRIX_PINS
を用いる。これはキーボードを格子配列にみたてて、行列それぞれにピンを割り当てる方式だ。
簡単に言えば上図の1〜6がピン割り当てになる。1と5のピンに通電すれば「D」が押されたと検知する、という具合だ。 QMK Firmware での設定の書き方は、 crkbd (Corne Keyboard) を例にすると以下のようになる。
#define MATRIX_ROWS 8
#define MATRIX_COLS 6
#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
BMP の場合 は以下。
"matrix":{"rows":8,"cols":6,"device_rows":4, "device_cols":6,
"debounce":1,"is_left_hand":1,"diode_direction":0,
"row_pins":[7, 8, 9, 10],
"col_pins":[20, 19, 18, 17, 16, 15],
一方 Quick7 など、一部のマクロパッドにおいては MATRIX_PINS
ではなく、1キーにつき1ピンを割り当てる、 DIRECT_PINS
という設定を用いている。キー数が少ない故、マトリクスの形を取らなくとも、 Pro Micro のピンが足りるためと思われる(設計者ではないので断言ができない)。そして現状、 BMP の config.json は DIRECT_PINS
に対応していない。
ではどうしたか、だが、擬似的に 1x9 のマトリクスとみなすことで対処した。
実は、 MATRIX_PINS
で設定している際、行列双方のピンが通電していなければ、キーを検知しないわけではない。例えば先の図で1番のピンだけが通電したとする。このときは、A、D、Gの3キーが押されたと検知する。したがって 1x9 のマトリクスとみなし、 DIRECT_PINS
として設定されていた9つのピンを各列に設定すれば、各キー入力の検知は可能になる。
具体的には、 Quick7 の QMK Firmware における DIRECT_PINS は以下の設定であり、
#define DIRECT_PINS { \
{ D2, D4, F4 }, \
{ D7, B1, B3 }, \
{ E6, B4, B2 }, \
}
これに対し、 BMP をこのように設定した。ピンの表記が双方で異なるためわかりづらいかもしれないが、 DIRECT_PINS
の各行のピンを横に並べ直すような形で col_pins
に設定している。
"matrix":{"rows":1,"cols":9,"device_rows":1, "device_cols":9,
"debounce":1,"is_left_hand":1,"diode_direction":0,
"row_pins":[13],
"col_pins":[10, 11, 14, 9, 16, 15, 2, 7, 20],
ちなみに row_pins
に設定している13ピンは、 Quick7 では使われていないピンをダミーで設定した。
電池基盤格納の物理的な問題
BMP を稼働させるには、別途電池基盤を接続する必要がある。 Quick7 はかなりコンパクトな筐体であるため、これをどこに格納するかが問題になった。
多いパターンとしては、遊舎工房で販売されている電池基盤が BMP とほぼ同じ大きさのため、 BMP の裏側に載せるような形で格納するパターンだ。実は手元にあった BMP は、すでにこの形で電池基盤をはんだ付けしてあるものだった。しかし、 Quick7 はトッププレートとボトムプレートの間を 10mm のスペーサーで結んでおり、この隙間に電池基盤付きの BMP は収まらなかった。
結論としてはシンプルに、 15mm のスペーサーに換装することで対応した。電池基盤を BMP と接着せず、横に並べるような形で配置すれば、もう少し薄くすることは可能かもしれない。
Conclusion
はじめに書いたことの繰り返しだが、特にこういったやり方をおすすめする記事ではなく、技術的なメモに近い内容である。ロータリーエンコーダ付きマクロパッドでは、公式に BMP 対応している Palette1202 なども存在するので、そちらを使ったほうがスムーズかもしれない。また、 QMK Firmware や BMP に僕自身そこまで詳しいとは思っていないので、ここで書いた方法以外の何かスマートな解決策が存在する可能性もある。
とはいえ出来には満足している。普段使いは Corne Cherry で長らく落ち着いてしまったが、たまにはこうやってキーボードを作ることも続けてみたい。