⌨️

TinyGo Keeb に参加してキーボードを作ってきた

に公開

はじめに

TinyGo Keeb Tour 2025 in Osaka というワークショップのイベントに参加してキーボードを作ってきました。

個人的に、Raspberry Pi Pico や Raspberry Pi Zero 2 W、Raspberry Pi 等を幾らか保持はしていますが、ぶっちゃけ自作キーボードには興味がなく、どんなもんだろうという程度の気持ちで参加しました。

午前の部

イベントは午前の部と午後の部に分かれており、午前の部でプリント基板にダイオードや抵抗、マイコンやキースイッチなどを乗せてはんだ付けをします。

この基盤、Gopher の絵が付いていてとてもかわいいです。作り上げてしまうとこの絵が見えないのが残念なくらい。

はんだは久しぶり過ぎて、そして老眼で手もとが危うく、お手伝い頂きながらなんとか。

これが完成品です。

左上がジョイコン、右上がロータリースイッチ、それと12個のキーから構成されます。真ん中の上部に 128x64 ピクセル、モノカラーで表示できるディスプレイが付いています。

午後の部

午後の部では、これにソフトウェアを組んでいきます。マイコンは rp2040、TinyGo でも扱えます。

ワークショップでは既にサンプルが幾つも用意されており、この作ったハードウェアを制御する為に必要な物が用意されています。

https://github.com/tinygo-keeb/workshop

一番分かりやすい例が 80_checker です。ジョイコンやロータリースイッチやキーの状態を監視する事が出来ます。

割とまったりとした時間進行で、午後の部でコードを書ける時間がたっぷり取れそうになかったので、ディスプレイに適当な物を表示するネタ行為に走る事にしました。

https://x.com/mattn_jp/status/1964242144924938270

このネタをやる為に workshop のリポジトリから参考になりそうな物をあさっていたので、コードを書く時間を消費してしまいました。

実際のコードはこんなに雑な物です。

https://gist.github.com/mattn/0fe517905743e2b3bffe90037336c5a2

この後、懇親会で色々とお話を聞いたりお話したりできました。楽しかったです。運営された皆様、お疲れさまでした。

自宅にて

このキーボードに付いているマイコン rp2040 は、僕も持っている Raspberry Pi Pico と同じマイコン。今回の TinyGo Keeb を主催されておられる sago35 さんが、rp2040 でも動作するゲームエンジン koebiten を開発しておられます。koebiten は hajijmehoshi さんが開発している Ebitenjin (旧 Ebiten) を TinyGo でも動作させられる様にした物です。

https://github.com/sago35/koebiten

サンプルコードに幾らか動くゲームも用意されています。

tinygo flash --target ./targets/zero-kb02.json --size short ./games/flappygopher

なんか作ろう

さすがにゲームを一から作るのは時間が掛かるので、ひとまずこのハードウェアの事を知る為に、一通りの制御を試す意味も兼ねて、簡単な HID キーボード兼マウスを作ってみました。

https://github.com/mattn/zero-kb02-joykeyboard/

ジョイスティックを使ってマウスカーソルを移動できます。ジョイスティックを押し込みながら移動させると2倍の速度になります。ロータリースイッチを押し込むとマウスクリック、ロータリースイッチをひねるとマウスホイールとして動作します。

キーにはカーソルキー移動や、Ctrl/Shift/Alt というモディファイアキー、C/V/Tab/Enter という適当なキーを割り当てていますので、コピペ程度であれば、このキーボードで出来る様になっています。
※ Tab が割り当ててあるのは Windows で Alt-Tab を使ってウィンドウスイッチする為です

簡単なウェブブラウジング程度であれば、このハードウェアだけで出来るはずです。

おわりに

前述の様に、自作キーボードには実はそれほど興味が無かったのですが、ジョイコンやロータリースイッチ、そして押したら光らせる事ができるキーには、なぜか人を引き寄せる物があるんだなという事が分かりました。
またこういったイベントがあってタイミングが合えば、参加させて頂こうと思います。プレゼント頂いた TinyGo Keebook じっくり読みます。

ところで TinyGo を世に知らしめるためのイベント TinyGo Conf 2025 が開催されるらしいです。興味のある方はぜひ参加してみてはどうでしょうか。

https://conf.tinygo-keeb.org/2025/

Discussion