Go言語を使ってキーボードファームウェアを作ってみました。
(厳密には「TinyGoおよびtinygo-keyboardを使って」、ですけど)
思っていたより簡単だったので、その簡単さを記事にまとめます。
まずは環境構築から。
目次
0. おことわり
この記事は2023年8月時点の情報に基づいています。
そのため、あなたがこの記事を読んでいる時点では、古い情報になっている可能性があります。
また、一個人である私が試した結果をまとめた記事になっています。
そのため、この記事の内容が正しいという保証はどこにもありません。
あくまで一つの事例として参照するにとどめてください。
1. 作業PCについて
以下のPCに環境を構築しました。
- Windows 11 Pro 22H2 (22621.2134)
- WSL 2
- Ubuntu 20.04.5 LTS
- Git がセットアップ済み
2. 環境構築
2-1. Goをインストール
まずGoをインストールします。
v1.18以降が推奨らしいです。
1 | $ sudo add-apt-repository ppa:longsleep/golang-backports |
1.20.7がインストールされました。
1.18以降なので問題ないでしょう。
2-2. TinyGoをインストール
次にTinyGoをインストールします。
2023/08/28時点の最新は0.29.0でした。
1 | $ wget https://github.com/tinygo-org/tinygo/releases/download/v0.29.0/tinygo_0.29.0_amd64.deb |
2-3. その他のインストール
AVR向けのインストール。
使うかどうかわからないけど念のため入れました。
1 | $ sudo apt-get install avrdude |
2-4. tinygo-keyboard の clone
tinygo-keyboard を、GitHub上の公式リポジトリからcloneします。
1 | $ git clone git@github.com:sago35/tinygo-keyboard.git |
3. 動作確認
tinygo-keyboardで使えるボードは、 /usr/local/lib/tinygo/targets/
にjsonファイルがあるようです。
今回はRP2040-Zeroをターゲットにしたいので、あるかどうか見てみます。
1 | $ ls /usr/local/lib/tinygo/targets/*rp2040-zero* |
waveshare-rp2040-zero
という名前でした。
試しに既存キーボードのファームウェアを、RP2040-Zero向けにビルドしてみます。
1 | $ tinygo build -o fric10key.uf2 --target waveshare-rp2040-zero --size short ./targets/fric10key/ |
ビルドできたようなので、環境構築はできたとみなします。
4. 参考資料
- TinyGo 公式サイト
- tinygo-keyboard 公式リポジトリ