自作キーボード”BROOKTEN”について

0.はじめに

今回は以前から作りたいと考えていたテンキーを脱着できる小型自作キーボード"BROOKTEN(ブルックテン)"についての記事です。ついでになりますが、その前身である"BROOK40(ブルック40)"についても触れていきたいと思います。

BROOKTEN

1.BROOKTENとは?

”BROOKTEN”は、Row-staggardの40%キーボードと4×4のテンキーで構成される自作キーボードです。キーボードレイアウトは中央で分割されたデザインとなっており、Row3とRow4の間は0.25U分のスペースが空いています。LEDによるレイヤインジケータや、ロータリーエンコーダを取り付けることが可能です。

キーボード

テンキー

キーボードとテンキーはそれぞれ単体で動作しますが、磁気ポゴピンによりキーボードの左右にテンキーを着脱することができ、電源一つでテンキー付きの40%キーボードとして動作します。

キーボード+テンキー

”BROOKTEN”の前に、その前身のキーボードである”BROOK40”を少し説明したいと思います。

2.BROOK40について

2-1.BROOK40とは?

BROOK40”もRow-staggardの40%キーボードで、”BROOKTEN”の元となる自作キーボードです。”基板色のチラ見せ”をコンセプトに設計しました。

BROOK40

2-2.BROOK40をつくったわけ

当時、持っているキーボードのほぼすべてがAlice配列であった私は、たまにはAlice配列以外のものも作ってみるか、と新たなキーボードを設計したくなりました。どのような配列にしようかと考えていたとき、目に留まったのがこちらです。

DSS Micro Keycap Setmechvault.net

ちょっとキーボードの名称が分からなかったんですが、小さいのにエルゴノミック、そして美しい、とても素晴らしいデザインです。

新たなキーボードは、このデザインをベースに設計しようと決めました。

”BROOK40”という名前の由来もこのキーボードから来ていて、”BROOK”は英語で小川の意味です。このキーボードのキーを分割している中央のスペースが、なんとなく”小川”見えた、というのがきっかけでした。

2-3.BROOK40の設計

私好みのキーボードの要件として、”右手用のB”というのがあります。

エルゴノミックを目指して分割したレイアウトで問題となる点のひとつに、中央付近のキーが、左右の人差し指で押せなくなってしまうということが挙げられます。私の場合、右手人差し指で”B”を押す癖がついてしまっていました。

また別の要件として、左のモディファイアキーが無くて困らないだろうかという不安がありました。小さくでスマートな30%キーボードの思想に相反することですが、Esc、Tabなどはよく使用しますので表に置いておきたいという気持ちがありました。

苦肉の策で、アルチザンキー置き場のような3連キーを追加することを思い付きました。

そうして出来上がったレイアウトが”BROOK40”のレイアウトになります。

f:id:Cerbekos00:20220417224611p:plain

BROOK40レイアウト

また、当時自作キーボードに取り入れたいコンセプトとして”基板色のチラ見せ”というのがありました。基板には黒、白、赤、青、黄、紫、ピンクなど色を指定することができますが、Ambi-GLで黄や青の基板に初めて見たときに綺麗な色をしていたので、差し色としていいのではと感じていたのでした。

Ambi-GLの基板

”基板色のチラ見せ”のため、基板を大きめに設計し…

PCBは小川の水滴をイメージ

プレートに多くのスリットを入れた形にします。

f:id:Cerbekos00:20220417232006j:plain

プレートの中央には山と小川を添えて

このとき、スリットの形状などの参考にしたのがかの有名な高級キーボードの”THERMAL”でした。

THERMAL SEQ2 KEYBOARDramaworks.store

2-4.BROOK40の使用感

発注から約2週間後、設計した基板が到着しました。

残念ながら到着した基板は若干位置がズレてしまっていました。KiCADを見直すとたしかにズレているのですが、制作過程のいつズレてしまったのかが全然わかりません。

他にもいくつか残念なところがあったのですが、幸いにも何とかキーボードとしての形にはなりました。

さて新しいレイアウトということで個人的に気になっていたのがキーボードの使用感です。結論的には、思いのほか打鍵がしやすく気に入りました。(よく考えるとAliceを横にしたようなものなので当然といえば当然なのですが…)中央のスペースのおかげで肩も窮屈さを感じないというのも良かったです。

その他、良い点・悪い点を挙げてみました。

(良い点)
👍打鍵しやすい
👍Aliceほどではないものの肩が開き窮屈さを感じない
👍”基板色のチラ見せ”のためのスリットなどデザイン
👍スリットや両端のみの固定により打鍵が柔らかい
👍左の3連キーがモディファイアキーとして使える
👍アルミ製のプレートは品質よく打鍵音も好み
👍短い基板を重ねてチルトをつける試みにより打鍵がしやすい

(悪い点)
👎モディファイアキーなしの配列ではCtrlキーに困る(ShiftはZ、WinはQ、AltはXのそれぞれ長押しで問題なかったが、Aキー長押しは誤打が多かった)
👎左下LEDインジケータが手に隠れて見えない
👎1Uエンコーダが位置的に親指だけでは回しにくい
👎プレートの設計誤りがあり少し右にずれている
👎基板の設計誤りがありスペーサーと基板に干渉がある
👎両端だけでマウントしたのでプレートが反ってしまう

あと、白いキーボードはかわいい

”BROOKTEN”の前身である”BROOK40”については以上です。
この経験を活かして”BROOKTEN”を設計していくことになります。

3.BROOKTENについて

3-1.BROOKTENをつくったわけ

BROOK40の打鍵体験を気に入った私は、仕事用途に同じ配列でキーボードを作成しようと考えました。

次なるコンセプトは「黒で小型で持ち運びやすく、数字入力にはテンキーが使えるキーボード」というものでした。ちょっとわがままなコンセプトなのですが、それを解決するキーボードの姿について私には思い当たる節がありました。

m.kiさんの磁気ポゴピンを使った分割キーボードです。

当時こちらを目撃した私は、マグネットを使うという発想に衝撃を受けるのと同時に、これテンキーを着脱するのに使えないかなと妄想を膨らませたりしていたのでした。まさに今回作るキーボードのコンセプトにぴったりです!

3-2.BROOKTENのレイアウト

”BROOK40”のレイアウトはそのままに、感じた良い点・悪い点をもとに変更を加えていきました。

まずは左のモディファイアキーを復活させました。やっぱりEsc、Tabはよく使うキーだったためです。

下段のキーレイアウトについてもキーを追加しました。これはロータリーエンコーダの位置がどこがベストであるか?という自問への答えがでず、とりあえず最下段は1Uの位置であればどこにでも取り付けられるようにした結果でした。

こうして完成したレイアウトがこちらとなります。

BROOKTENのレイアウト

お気づきかと思いますが、名前の由来は”BROOK”+テンキーで”BROOKTEN”です。ちなみにどうでもいいことですが、個人的にはニューヨークの”Brooklyn(ブルックリン)”みたいな発音をイメージしています。

3-3.BROOKTENの設計

3-3-1.磁気ポゴピン

磁気ポゴピンの先例があるとはいえ、実際に設計するとなるといくつも課題がありました。

まず実現するにはSplitKeyboardの実装が必須、ということが思い浮かびましたが、SplitKeyboardを設計したことがありません。磁気ポゴピンがどのように作用しているかはもとより、そもそもSplitKeyboardがどんな通信をしているかすら知りませんでした。

docs.qmk.fm

QMKドキュメントのSplitKeyboardの項を見て学習し、とりあえずシリアルとI2Cの2種類の通信方式があり、その方式により通信必要なワイヤ数が変わることを理解した私は、磁気ポゴピンを探し始めました。

ja.aliexpress.com

この商品であればシリアル通信に必要なワイヤ代わりとなるものが3つあり、さらに90度にピン曲がっているため基板に取り付けやすそうです。また商品ページにはRecommended PCB Layoutも記載されていて、基板設計もできそうでした。(おそらくm.kiさんの先例と同じものかな?)

回路図に関しては分割キーボードで一般的に使用されているTRSケーブルのジャックを流用しました。

回路図

フットプリントは例のRecommended PCB Layoutを参考に自作してみました。

これをPCBの端に向かい合うように設置し、配線します。

端子の並び順を揃える

テンキーが左右のどちらにでも脱着可能ということで、ついでに円形のロゴも作成してみました。キーボードとテンキーの間を跨ぐことを考えて間をあけています。

3-3-2.ロータリーエンコーダ

ロータリーエンコーダは位置決めを迷った結果、最下段の1Uの位置であればどこにでも取り付けられるようにする、という方針にしました。

このためにはフットプリントをスイッチとエンコーダが両立できるものとする必要があります。”kymok”さんが公開されているものがまさにそれです。

zenn.dev

これをベースに少しアレンジ。パッドを大きくし、ソケットのシルクを変更しました。

このフットプリントにより、組み立て時にエンコーダの位置をホットスワップのように変えながら好みの位置を探すことができるようになります。

なお、最下段はどこでも取り付けることが可能ではありますが、配線を辿れば2つのエンコーダのピンのいずれか辿り着きます。つまりエンコーダの位置は選択できますが、エンコーダの数を増やすことはできないということです。エンコーダの配線は左側と右側で分かれており、仮に左側にエンコーダを2つ取り付けた場合、2つとも同じ動きとなります。

3-3-3.LED

”BROOK40”では左手に隠れて見えなかったLEDは、中央に配置変更。LEDの光が直接見えるとまぶしいかなと思いこんな形にしてみました。

中央だけでなく、本体の下段の1Uキーに4か所、テンキーに2か所LEDを配置しました。これはテンキーに関しては、本体のようにインジケータ用のLEDを取り付ける場所がないため、スイッチのバックライトをインジケータ代わりにするためです。

スイッチを照らすバックライトであるので、副次的な役割としてアルチザンキーキャップを明るくライトアップしてくれる用途にも期待。

3-3-4.キープアウト(禁止)エリア模様

キープアウト(禁止)エリアで模様を描くテクニックを使って今回はこんな模様にしてみました。今となっては具体的な作成方法が思い出せない、偶然の産物デザインです。

3-3-5.その他

”BROOK40”は両端のネジのみでプレート支える構造にしていたのですが、プレートがしなり耐久性が気になりました。今回は仕事用と考えているため、中央にネジを配置してプレートを固定するようにしました。

ついでにスペーサーの長さを変えることでチルトをつけることを思いつき、横の位置を揃えました。

基板の外形ラインについては、テンキーが左右の両端で接続した形がメインとなるため、なるべくスイッチからの余白を少なくすることで、接続時にキーボードとテンキーの一体感が生まれるかなと考えました。ゼロ距離でもよかったのですが、少しだけ余白を作るようにしました。

赤い矢印の距離短い程、接続したときの一体感がでる

最終的な基板の全体像はこんな感じです。

3-3-6.BROOKTENのファームウェア設計

今回はファームウェアの設計に苦労しました。

以前の”Ambi-GL”に関するブログ記事で言及したとおり、私は初期のGL516の開発手順やテンプレート、ファームウェア作成方法を参考にさせていただき、これまで自作キーボードを設計していました。

cerbekos00.hatenablog.com

このため特に意識せずDuplexMatrixをベースにした回路を設計し、カスタムのmatrix.cを使用していた、ということになります。そうするとQMKドキュメントに記載の通りにrules.mkにSPLIT_KEYBOARD = yesとするだけでは全然動きません。

これを動かすためにあれこれと試行錯誤する毎日となりました。ここに詳しく書くほどまとめることも出来なかったので箇条書きにします。

(試行錯誤したこと)
💦SplitKeyboardのQMKドキュメントを漁る
💦もしやビルド環境が古い?QMK MSYSを最新にsetupしてみる
💦もしやQMKが古い?QMK ファームウェア環境を最新にしてみる
💦基盤や回路の設計ミスを疑ってみる
💦custom_matrix.cに気づき、真剣にソースコードを見はじめる
💦DuplexMatrix、COL2ROW、ROW2COLについて調べる
💦回路から作り直しを考える。が、本体とテンキーという組合せではDuplexMatrixなどを使用しない限りProMicroのピン数が全然足りないことを知り絶望
💦最新のQMKのmatrix.cをベースにDuplexMatrix化するコードを書き始める
💦ようやくSplitKeyboardとして動作するファームができる。しかしキーボード本体だけやテンキーだけでは動かない問題が発覚
💦しばらく悩む。最新のQMKのmatrix.cが公開されており差分をあててなぜか解決
💦重度のチャタリングのような事象が発生
💦チャタリングをソフト的に解消しよう - 25KEYSを参考にデバウンスを変更して解消
💦スレーブ側からUSBで電力を取る場合のみ、マスター/スレーブともにScanがおかしい事象が発生…

何度この画面を見たことか

試行錯誤の末、CUSTOM_MATRIX = lite、matrix.cを大幅に改変することで何とか”キーボード本体のみ”、”テンキーのみ”、”キーボード+テンキー”で動作するところまで辿り着くことができました。

ただ、スレーブ側から電力をとる場合、つまりテンキー側のProMicroに電源を繋ぎ、キーボード本体を磁気ポゴピンで接続したときに挙動がおかしくなる事象は発生しており、現状は解決の目途が立っていません。おそらく根本的なソースの記述などに問題があるとは思うのですが、本体側から電源を取ると動くのでこれ以上悩むことをやめてしまいました。

下記にソースを公開していますので、自作キーボード作成の参考にしていただいたり、私の代わりに直していただけるなどありましたら幸いです。

github.com

3-4.BROOKTENの使用感

3-4-1.組み立て

発注から約2週間後、到着した基板が到着しました。

ロゴもなかなかいい感じ。

トッププレートとボトムプレートの、キープアウト(禁止)エリアはこのような感じに仕上がりました。

磁気ポゴピンも無事にはまりました。磁力もなかなかのもの。

エンコーダの位置の検討も行いました。スイッチとキーキャップをつける場合、トッププレートまで取り付けると外すのが面倒なので、トッププレートなしで行います。

今回は中央にしてみました。ここだと親指で回しやすいですね。

エンコーダの位置が決まればトッププレート、ボトムプレートを取り付けて完成です。テンキーも同様に。

3-4-2.使用感

キーボード本体はBROOK40と同様に打鍵しやすく、左のモディファイアキーが増えた分片手での操作がしやすくなりました。また追加の下段キーについても、組み上げるまではキーを持て余すかと思いましたが、別レイヤに格納していたよく使う記号キーを配置してみたところ意外に重宝しました。

中央に配置したLEDインジケータも正面から見ると光が抑えられていい感じです。

LEDインジケータの色はAmbiシリーズと同じにしました。

左上から右下に向かってL0~L3、CapsLock、NumLock

今回はエンコーダを中央にしているため光が見えませんが、中央の1Uキーも光るのでそこにお気に入りおアルチザンキーキャップをつけるものも良いと感じました。

エンコーダは中央にあることで親指だけで回すことができます。ただ1Uだと直径が小さいので感覚がシビアでよく回しすぎてしまいます。

テンキーには、下の写真の位置にエンコーダをつけることができます。私は今のところエンコーダ無しで使用しています。

”Tenalice-ambidextrous”でもテンキーの有用性については認識していましたが、キーが4×4の16キーとなり、Ambiからは2キー増えたことで1~9、ドット、エンターに加えて四則演算等をレイヤを切り替えず配置でき、よりテンキー本来の力を発揮できるようになりました。

テンキーはNumLock状態かどうかにより、入力される内容が変わります。

使いはじめは下の写真のように、本体のキーと組み合わせたアローキーも試していました。最近はNumLockを使った8426をアローキーとして使うことが多くなりました。

その際、NumLock中であるかの判定にLEDインジケータがとても重宝しました。一般的なキーボードでもNumLock状態やCapsLock状態がLED分かるようになっているものがほとんどですが、その理由がよくわかります。

テンキーをキーボードに着脱する様子の動画を撮ってみました。今気づきましたが、一部テキストが誤ってますね…。

なお、キーボード本体とテンキーはSplitKeyboardという扱いになります。QMKドキュメントのSplitKeyboardのページには、ハードウェア要件の考慮事項として下記の文面があります。

ただし、ワイヤのうちの1本が Vcc を供給するため、キーボードはホットプラグ不可能です。TRRS ケーブルを抜き差しする前に、必ずキーボードのUSB接続をはずす必要があります。そうしなければ、コントローラを短絡させたり、もっと悪いことが起こるかもしれません。

動画で無視しちゃっていますが、みなさん気を付けましょう。

しばらく左右それぞれでテンキーを使ってみた感想について述べてみます。なお私は右利きであり、右手でマウスを操作する人であることが前提の感想となります。

左側にテンキーがある場合、右手でマウスを操作しながらテンキーを入力できる点が一番のメリットだと思います。またテンキーが左にあるため、キーボードからマウスまでの距離が短く右手の移動の負担が少ない印象です。

右側にテンキーがある場合、テンキーを使いつつ左手でEscやTABなどに素早くアクセスできるのがメリットになります。また一般的なテンキー付きキーボードと同じく、右手でテンキーを操作すること自体もメリット(慣れた手つきでという意味)になります。一方で、右手でキーボード⇔テンキー⇔マウスという操作が必要になるため、右手の移動距離が大きくなるのはマイナスポイントだと感じました。

実際に仕事でも使ってみましたが、打合せや場所を移っての作業は本体のみ、数字を扱うときはテンキーを繋いで…という感じで、使用していてとても楽しいです。

以上、ずいぶんと長くなりましたが”BROOKTEN”についての設計内容と使用感でした。

4.頒布について

現在、手元にある分をBOOTHにて頒布する計画を考えています。キットには磁気ポゴピンも付属する予定です。

cerbekoskeyboard.booth.pm

ただし、一部注意があります。テンキー基板のProMicroの取り付けについて、本来はProMicroを表裏反転させて取り付けるよう設計していたのですが、発注ミスがあり反転できていません。このため、ピンソケット FSS-41035-13を使ってProMicroを取り付けすることにしています。こちらによる問題のひとつはピンソケットの厚みで、ピンソケットとホットスワップソケットが干渉するため、若干ですがピンソケットをやすりなどで薄くする必要があります。(写真の赤の面)

ピンソケットを使用することにより少し高さが出てしまいます。ボトムプレートとの干渉がギリギリになりますが、問題はありません。

5.おわりに

夢に見ていた「磁力によるテンキー脱着キーボード」が作成でき、見た目にも機能的にも大変満足で、作成して良かったなと感じています。

今回は特にファームウェアづくりが難しくかなりの時間と労力がかかりましたが、キーボードやマトリックスがどのように動作しているかについてソースを追って理解し、結果的になんとか動くものを作成することができてよかったです。完璧なものではないと思いますが、制限があってもとりあえず動いているからいいや、ということで。もし”BROOKTEN”を気に入り、頒布したものを手に入れられた場合も、そういう作者から買ってしまった、ということで細かいところは許してください。

それでは、良いキーボードライフを。