ProMicro RP2040用のRust(+Embassy)製Keyballファームウェアです。
紹介記事: RustとEmbassyでKeyballのファームウェアを作った
基本的なキースキャン機能とレイヤ機能を実装しています。keyboard/keymap.rs
を編集することでキーマップを変更できます。
- 左右間の通信が不安定なことがある
- メディアキーが効かない
elf2uf2-rs
をインストール
cargo install elf2uf2-rs
- BOOTSELボタンを押しながらProMicro RP2040をUSBに接続
src/config.example.rs
をsrc/config.rs
にコピーsrc/keyboard/keymap.example.rs
をsrc/keyboard/keymap.rs
にコピー- 実行
cargo run --release
Tip
このファームにはダブルリセットでBOOTSELに入る機能が内蔵されているため、以降はBOOTSELボタンを押しながら差す必要はありません。
Note
通常のProMicroのようにハードウェアでダブルリセットを検知しているわけではないので、ダブルタップが早すぎると検知されません。
- 基本的なキースキャンとUSB HIDへの出力
- PMW3360によるマウス入力とUSB HIDへの出力
- 分割キーボード間通信(partial)
- 半二重通信によるバイト列の送受信
- postcardによるバイト列のシリアライズ/デシリアライズ
- master側でのデータの受信と処理
- OLEDディスプレイ
- 文字表示
- ステータス表示
- 画像表示
- せっかく容量があるのでアニメーションとか表示したい
- LED(ws2812)
- とりあえずなんか光る
- きれいに光らせる
- master/slave判定をちゃんとする(今はマウスあるかどうかで判定している)
- PMW3360のSPI通信の安定化(なぜか認識されないことが多々ある)
- sendの失敗検知と再送信
- OLED未接続時にpanicしないようにする
- master側がまあまあ熱くなるのを直す
- 高度なキーマップ機構(レイヤなど)
- 左トラックボール対応
- Keyball61以外の対応
- Vial対応
- BLE Micro Pro対応(NRF52なのでできないことはなさそう?)
これらの先人がいなければここまで作れませんでした。
- もろもろ参考
- ダブルリセットでBOOTSEL
- PMW3360ドライバ関連
- 分割キーボード間半二重通信