トラックボール付きのキーボードを作ってみる

キーボードにトラックボールを取り付けたいと思い、入手が比較的容易なブレイクアウト基板を試してみました。
f:id:yyoshisaur:20220302231104j:plain

7mmオプティカルトラックボールモジュール1uタイプ+トラックボールモジュール用レベル変換基板

bit-trade-one.co.jp
nogikes.booth.pm
トラックボールの径は小さいですが、一般的なトラックボールマウスと同様に光学式なので操作感は良く、滑らかにマウスカーソルを操作できます。
国内の自作キーボードのお店でモジュールとレベル変換基板を購入することが出来き、入手性が良いと思います。
(在庫切れの場合もありますが、定期的に在庫が復活しています。)
7mmオプティカルトラックボールモジュール1uタイプ – 遊舎工房ショップ
トラックボールモジュール用レベル変換基板 – 遊舎工房ショップ
トラックボール – Daily Craft Keyboard
トラックボールモジュールを固定するホール等はなく、別途カバーやケースを作り固定する必要があります。
トラックボールモジュールから出ているケーブルは根元が断線しそうで容易にケーブルの取り換えも出来なさそうなので、位置が決まればホットボンドやエポキシパテパテで固定したほうが良いかなと思います。
QMKファームウェアでこのトラックボールを使用するためのサンプルプログラムもレベル変換基板の作者の方が公開されていて、自身のキーボードに組み込むことができます。
github.com

Pimoroni Trackball Breakout PIM447

Trackball Breakout - Pimoroni
調べてみてあまり情報がなかったので、少し詳しく紹介します。
センサーは光学式ではなく、磁気でトラックボールの回転を読み取る方式です。
赤、緑、青、白の4つLEDがトラックボールの下部に付いていて、トラックボールを照らすことができます。
f:id:yyoshisaur:20220302231340j:plain
またトラックボールの下部にプッシュボタンも付いていて、ボールを押し込むことで操作できます。
ケースはツメで固定してあるだけなので、取り外し可能です。
トラックボールモジュールもケースで押さえて固定されているだけなので、取り外し可能です。
f:id:yyoshisaur:20220302231200j:plain
f:id:yyoshisaur:20220302231302j:plain
f:id:yyoshisaur:20220302231330j:plain
光学式と違い、トラックボールモジュールには4つ磁石のローラーが付いていて、ボールを回転させることでローラーが回転し、磁気センサーで回転を読み取っているようです。上下左右の4方向の移動は滑らかですが、斜めのマウスカーソル移動には少し違和感がありました。(斜めに動かないわけではなく、光学式と比較すると滑らかではないという程度です。)
2つ購入したのですが、ローラーがうまく回らない個体がありました。トラックボールモジュールは「BlackBerry Bold 9000」等で使用されていたものと同じなので、Aliexpressでモジュールだけ購入することができます。(交換用にAliexpressで購入してみましたが、全方向滑らかに回転しました。)
f:id:yyoshisaur:20220302231356j:plain
4つ固定用のホールがあるので、スペーサーやネジで基板に固定することができます。
I2C通信なので同じく自作キーボードでよく使われるI2C通信のOLEDディスプレイとバスを共有することができます。
トラックボール本体の他に付属品としてL字のピンソケットとストレートのピンヘッダが入っていました。
このトラックボールはQMKファームウェアでサポートされています。
docs.qmk.fm

トラックボール付きキーボードを作る

f:id:yyoshisaur:20220302231348j:plain
今回トラックボール付きのキーボードを作る動機は、Raspberry Piで遊んでいるときにちょっとしたマウス操作でマウスを接続するのが面倒なので、キーボード1つで完結したいというものです。(キーにマウスカーソル操作を割り当てることもできますが、操作感がイマイチです。)
据え置きとして使用せず、キーボードの取り外しを頻繁にするので取り回ししやすい一体型で作ることにします。
キー数はお気に入りの36キーでパームレストが不要なChocスイッチ(ソケット)、サイズがコンパクトになる格子配列(キーピッチ18mmx17mm)にします。
トラックボールはPimoroni Trackball Breakoutを採用します。
2.5mmのコンスルーを使用した時にtype-C版ProMicro互換品のコネクタを逃がせるように基板に切り欠きを付けました。
Pimoroni Trackball BreakoutはL字のピンソケットとL字のピンヘッダを使って接続するようにしました。
Pimoroni Trackball Breakoutを使用しない場合は、ロータリーエンコーダを実装できるようにしました。
f:id:yyoshisaur:20220303112846j:plain
f:id:yyoshisaur:20220302231403j:plain
マウスとしての機能は以下のようにしました。

  • トラックボールのプッシュボタンはマウスクリックに使用し、デフォルトレイヤーでは左クリック、レイヤーによって右クリック、中クリックを割り当て
  • プッシュボタンを押下している時はトラックボールは物理的に動かせないため、ドラッグ&ドロップはプッシュボタンを一定時間押下したままにするとクリックをホールドするようにして対応
  • デフォルトレイヤー以外でトラックボールを動かすとスクロール

LEDはレイヤーによって色を変化させるなどインジケーターランプとして使用することも出来そうです。
f:id:yyoshisaur:20220303022713g:plain

ケースとトッププレートは3Dプリンタで印刷しました。
私が使っている3Dプリンタ(kp3s)では大きすぎて印刷できないので、半分に分割して印刷しました。
分割型キーボードの基板ではあまり気にならなかったのですが、一体型の長い基板では基板の反りが気になりました。
分割したケースを接着しないと基板の反りでキーボードが水平にならず片側がほんの少し浮きました。(ケースを接着すると改善しましたが、基板の反りを直してから部品を実装した方がよかったかなと思いました。)

まとめ

今回挙げた2つのトラックボールモジュールを比較すると操作感は光学式の7mmオプティカルトラックボールモジュール1uタイプの方が良いです。
トラックボール以外の機能(プッシュボタンやLED)が魅力的に感じるならPimoroni Trackball Breakoutが良いと思います。
小型のトラックボールですが、複雑なマウス操作でなければ快適で満足しています。