tinygo-keebで作成したzero-kb02を使って Xxx-deckみたいにMacをちょっとだけ便利にします。
マイコン:waveshare-rp2040-zero
- CPU・メモリ使用率をOLEDに表示する
- 使用率に応じてLEDマトリクスにバー表示する
- ロータリーエンコーダーで音量を調節する
- joystickでマウスホイールスクロール(押下中はゆっくり下スクロール)
- キー入力・長押しでレイヤーを切り替える
- macOSの通知を検知してLEDを光らせる
- USB接続で
host_daemonを自動起動する - Gameレイヤーで選んだゲームをOLEDで遊ぶ
- 10キーにする
レイヤーキー(KeyC3R2)の長押しは Deck → Game → Deck と巡回する。
Game に入るとゲーム選択画面になり、OLEDはゲームが占有する。
| 場面 | 操作 |
|---|---|
| 選択画面 | エンコーダー回転でカーソル移動、押し込みで開始 |
| プレイ中 | レイヤーキー以外のどのキーでもジャンプ、エンコーダー押し込みで終了して選択画面へ(導線はゲームオーバー画面に ENC:MENU として出る) |
| どちらでも | レイヤーキーの長押しで Deck に戻る |
Game レイヤーの間は音量調節・ホイールスクロール・LEDの使用率表示を止める。
ゲーム本体は rin2yh/dinosaur-game の
game パッケージをそのまま使っていて、internal/arcade は選択画面と
ssd1306 への描画だけを持つ。追加するゲームが 128x64 の 1bit 画面に
SetPixel で描き、Update(pressed bool) で 1 フレーム進む形なら
internal/arcade/arcade.go の entries に足すだけで選択画面に並ぶ。
mise run flashデバイスを USB 接続したタイミングで host_daemon を起動し、切断で終了する LaunchAgent を登録する。
mise run install- バイナリ:
~/.local/bin/tiny-deck-host - plist:
~/Library/LaunchAgents/com.github.rin2yh.tiny-deck.plist - ログ:
~/Library/Logs/tiny-deck.log
通知監視のため macOS の Full Disk Access を tiny-deck-host に許可する必要がある
(システム設定 → プライバシーとセキュリティ → フルディスクアクセス)。
アンインストール:
mise run uninstallplist の IOKit マッチング設定ミス等で複数プロセスが同時起動してしまった場合、
install.sh を走らせる前に稼働中のデーモンを明示的に止めてから入れ直す。
launchctl bootout "gui/${UID}/com.github.rin2yh.tiny-deck" 2>/dev/null || true
pkill -f "${HOME}/.local/bin/tiny-deck-host" || true
mise run install