2022/03/02の昼12時よりトラックボール付き自作キーボードKeyball61が一般販売されます。 販売を記念してファームウェアを担当した身としてKeyball61の魅力をかなり角度を付けて語りたいと思います。
明日3/2㈬の昼12時から #Keyball61 の初期ロットを10セットだけ販売開始します!初回はLEDおまけ付きです
— 白銀ラボ ヨーキース🎱 (@Yowkees) March 1, 2022
量産版供給はその一週間後くらいの予定です。よろしくお願いします🙏https://t.co/FL8TvBTooE
Keyball46との関り
Keyball61を語るうえで、前作であるKeyball46と僕との関りを抜きに語ることはできません。 そもそもKeyball46はYowkeesさんが設計したトラックボール付きの自作キーボードです。 僕にとって刺さった最大のポイントは一部の部品を射出成型で作っているという点でした。 射出成型というイニシャルコストがアホほどかかっているだろうその無謀・漢気に惚れたのです。詳細は以前の記事も参照ください。
惚れた結果、ファームウェアについてのアドバイスから、初回ロットを購入し、ファームウェアのコードに徹底的に手を入れ、遊舎工房での通販でも購入しました。
Keyball46のファームウェアに取り組むうえで最大の困難となったのがファームウェアのサイズです。 光学センサー用のファームウェア(通称SROM)4KBを同梱しなければならないため、 28KBしか許容されないPro Microでは機能をギリギリまで削る必要があった点です。 普通の人が使う上でVIA/Remap対応は必須です。 そうなるとOLEDやLED(RGBLIGHT)についてはほとんど何もできなくなる、 そんなレベルの容量不足でした。
ただ当時としてはベストを尽くし、かなりハイレベルなファームウェアを完成させたという自負はありました。
そしてKeyball61へ…
そして2022年頭にYowkeesさんから、 Keyball61のキットを送るからファームウェアを手伝ってくれないか、 との連絡をいただき一も二も無く引き受けました。 Yowkeesさんからの当初の希望はduplex matrix(倍化マトリックス)という 特殊なキーマトリックスの部分だけなんとかして欲しかったようです。
ちなみにduplex matrixとは、少ないGPIO数で多くのキー数をサポートするためのものです。 Keyball61はトラックボールに加えOLEDやRGB LEDを搭載し左右分割でもあるため、 自由になるGPIOが少なく普通のマトリックスだと片側30個のキーを表現できないのです。
数日後届いた内容はKeyball61のキットを2セットに回路や部品など必要な諸々、 さらにはKeyball39なる次の作品までいただいてしまって俄然火が付きます。 ええ気合を入れてKeyball46での資産を捨ててフルスクラッチしました。
なお組み立ての際の作業動画が6本ほどあります。 組み立ての際の参考になれば幸いです。
- 1台目(右ボール)
- 2台目(左ボール)
Keyball61のファームウェア製作
まず取り掛かったのがduplex matrixでした。 ここだけ何とかなれば最悪Keyball46のコードに巻き戻って動かすことができますからね。 とはいえこれはさしたる苦労もなくできました。 まとまった資料が少なくちょっとハマった部分もありましたが、 それについては別途書くかもしれません。
次に取り掛かったのがメインディッシュたる光学センサーPMW3360DMのドライバーです。 このドライバーは先に書いた通りPMW3360DM用のSROM 4KBを必要とするため、 キーボード全体の容量の1/7を占めてしまうわけです。 しかし一節にはPMW3360DMはこのSROM無しでも動くとの情報もあり それにかけることにしました。
やったことはまたしてもフルスクラッチ。 世の中に出回ってるPMW3360DM用のドライバーコードを破棄して、 データシートとにらめっこしながら1つ1つ確かめつつ実装していきました。 その結果わかったことはよくあるドライバーコードはデータシート通りに作られておらず、 つまりバグのためにPMW3360DM本来の性能を活かせてなかったということです。
そしてSROMなしで動くことも確認できました。 つまりそれだけで4KBもの巨大(?)なサイズを節約できるようになったのです。 さらにCPI、1インチあたり何カウントするのかを調節できるようにもなりました。 これはマウスではDPIとも言います。 PMW3360DMではこのCPIを100から12000まで100ずつ、 つまり120段階で調整できるわけです。 このCPIはキー操作で変更でき、EEPROMに永続化できます。
さらに今回は実装していませんが PMW3360DMには軸を1°単位の角度調整できるなどの高度な機能も備わっており、 その気になればそれらを変えるファームウェアを作れるようになりました。
また4KBもの容量が削減できたことでVIA/Remapに対応したうえで、OLEDを有効化し、 より多くのRGB点灯パターンを含めることができました。
さらに特筆すべき隠し機能として、 2セット用いてダブルボール構成で使いたいときにファームウェアを書き換えることなく、 VIA/Remapがそれを検出してレイアウトを正しく表示してくれる機能まで仕込みました。
そうこうして Keyball61のファームウェアはできうる限りの機能を28KBのサイズに詰め込んだ、 まさにベストオブベストと言えるものになったと自負しています。 なおこれらの成果はそのままKeyball46にフィードバックされています。
Keyball61の感想
最後に私がKeball61に抱いた感想を列挙して販売開始のお祝い推薦の言葉とします。
- HHKBのような60%キーボードに慣れた人にはまったく無理のないキー数
- 内向きトラックボールの意外な使いやすさ: Keyball46を軽く超えています
- 部品レイアウトが綺麗なPCBで、比較的作りやすい
今回は僅か10セットの販売ですが、 部品調達が済み次第追加販売があるようですので、 興味がある方は是非購入を検討してみてください。
また興味があるけどハンダ付けに自信がないなとか、 買う前に触ってみたいという都内の方には、 何かしら相談に乗れることがあるかもしれません。 twitterあたりでお声がけいただければ。