結論
BLE Micro Proでkeyball44が動作するまでは確認できましたが、光学センサー(PMW3360)へ電源を供給する術がないぞ..というところで断念しました。少なくともUSB経由で電源を供給してあげれば無線で使用できるのでBMPのファームウェアだけでも供養しておきます。あとはハードウェアに詳しい方が...(「keyball44を無線化したい」というツイートは散見されたので需要はありそう)
Keyball
白銀ラボさんが販売している分割型トラックボール付きキーボード
BLE Micro Pro
使用するキーボードに合わせてCONFIG.JSNを設定するだけで簡単に自作キーボードを無線化できる優れもの。キーボードによっては対応していない場合もあるようですが、Keyballのドキュメントを見ながら順番に設定すると無事に無線でキー入力ができました。
CONFIG.JSN
自分のkeyballは右側(ボールあり)、左側(ボールなし)なので右側をマスター、左側をスレーブにしています(ちなみにLEDやOLEDは使用していません)。両方とも無線で使うこともできますし、TRRSケーブルを繋いだ状態だと左側(スレーブ側)は電源がなくても動作するようでした。
{"config":{"version":2,
"device_info":{"vid":"0x0000","pid":"0x0000","name":"ble_micro_pro","manufacture":"sekigon-gonnoc","description":"A development board for wireless split keyboards"},
"matrix":{"rows":8,"cols":6,"device_rows":4,"device_cols":6,"debounce":1,"is_left_hand":0,"diode_direction":0,"row_pins":[20,19,18,17],"col_pins":[7,8,9,10,11,12],
"layout":[
1, 2, 3, 4, 5, 6, 30, 29, 28, 27, 26, 25, 0,
7, 8, 9, 10, 11, 12, 36, 35, 34, 33, 32, 31, 0,
13, 14, 15, 16, 17, 18, 42, 41, 40, 39, 38, 37, 0,
20, 21, 22, 23, 24, 48, 47, 44]},
"mode":"SPLIT_MASTER","startup":1,
"peripheral":{"max_interval":20,"min_interval":10,"slave_latency":7},
"central":{"max_interval":60,"min_interval":30,"slave_latency":7},
"led":{"pin":1,"num":60},
"keymap":{"locale":"US","use_ascii":0},
"reserved":[0,0,0,0,0,0,0,0]}}
{"config":{"version":2,
"device_info":{"vid":"0x0000","pid":"0x0000","name":"ble_micro_pro","manufacture":"sekigon-gonnoc","description":"A development board for wireless split keyboards"},
"matrix":{"rows":8,"cols":6,"device_rows":4,"device_cols":6,"debounce":1,"is_left_hand":1,"diode_direction":0,"row_pins":[20,19,18,17],"col_pins":[7,8,9,10,11,12],
"layout":[
1, 2, 3, 4, 5, 6, 30, 29, 28, 27, 26, 25, 0,
7, 8, 9, 10, 11, 12, 36, 35, 34, 33, 32, 31, 0,
13, 14, 15, 16, 17, 18, 42, 41, 40, 39, 38, 37, 0,
20, 21, 22, 23, 24, 48, 47, 44]},
"mode":"SPLIT_SLAVE","startup":1,
"peripheral":{"max_interval":60,"min_interval":30,"slave_latency":7},
"central":{"max_interval":60,"min_interval":30,"slave_latency":7},
"led":{"pin":1,"num":60},
"keymap":{"locale":"US","use_ascii":0},
"reserved":[0,0,0,0,0,0,0,0]}}
ファームウェア
BMPのサンプルとKeyballのドライバーの実装を参考にSPIでPMW3360を制御するコードを追加したところ無線でマウス入力もできました。とりあえず動作検証して終わった程度なのでcpiの調整機能などは実装してません。ハードウェアの課題が解決できれば残りの実装やトラックボールを操作した際の自動レイヤー切り替えなども対応したいですね..