【BongoCat】CorneCherryのOLEDをカスタマイズする
corne cherryのOLEDが寂しかったのでBongoCatを住ませました。
少しコードの改変はいるものの、それほど手間がかからずに導入できたので実装方法を解説します。
OLEDに寂しさを感じる方は是非挑戦しみてください!個人的な満足度は非常に高いです。
完成系
OLED上にBongoCatが表示させる。キー入力が無い時は微妙に揺れながら待ってくれていて、キー入力があると左右の手でbongoしてくれる。(かわいい)
事前準備
QMKファームウェアのビルド環境
コードを改変するためビルド環境及びFWの焼き込み環境が必要です。
公式の案内に従ってビルド環境を用意して下さい。
QMKファームウェアの焼き込み環境
corneの制作過程で用意したものと同じでOKです。
BongoCatのソースコードをダウンロード
こちらのGitHubからSatisfaction75用のbongoCatのソースコードを入手します。
今回はこのコードを流用して実装します。
実装してみよう
改変対象のコード
QMK_firmware内のvia対応のcorneファームウェアを改変します。
具体的な場所は以下の通り。
qmk_firmware > keyboards > crkbd > config.h | crkbd.c | rules.mk
実装手順
corneはOLEDが2つ搭載されているため、bongoCatのGit内に記載のあるHowToUseに従っても正しく動きません。本家を少し改変した以下の実装を行うことで導入ができるようになります。
GitHubからダウンロードしたファイル内のbongo.hをcrkbdディレクトリにコピー
confilg.hに以下の1行を追加
#define BONGO_ENABLE
rules.mkに以下の3行を追加
OLED_DRIVER_ENABLE = yes
OLED_DRIVER = SSD1306
WPM_ENABLE = yes
crkbd.cに以下を追加。特にこだわりが無ければ #include QMK_KEYBOARD_H
の次の行に入れておくと安心です。
#ifdef BONGO_ENABLE
#include "bongo.h"
#endif
crked.c 内のoled_task_userを以下の通りに変更する。
bool oled_task_user(void) {
if (is_keyboard_master()) {
oled_render_layer_state();
oled_render_keylog();
} else {
draw_bongo(false);//追加
//oled_render_logo(); //削除(既存コード)
}
return false;
}
あとはビルドして焼き込めばOK!
実装にあたっての補足
BongoCatのシンプルモード
Step5で追記したdraw_bongoの引数をTrueに変えると表示がシンプルモードに切り替わります。
シンプルモードではVPMの表示が無くなり、全面にBongoCatが描画されます。
VPMが動かない
corneではVPMの表示が常時0となっており、VPMが表示できないようでした。
特にVPMが分かっても意味がないところもあるので、私はキーの入力回数をカウントして表示するように変えています。
まとめ
いかがだったでしょうか?
この記事ではCorneCherryのOLEDに可愛いキャラクターを表示する方法を解説しました。
先人のソースコードのおかげでそれほど手間もなく実装できるので、QMKファームウェア改変の入門としては非常に良い素材かと思います。
今回は趣味に走った記事になりましたが、普段はマーケティングや業務効率化に関して発信していますのでご興味のある方は是非他の記事の閲覧もお願いします。