QMK firmwareでタップ数をカウントアップして表示する
Index
OLEDで何かできないか
まずはファームの勉強を兼ねてOLEDで何かできないか考えたところ
タップ数をカウントアップして表示するのが難易度低そうで良さそうかな
と思い実行してみました(c経験ほぼ0)
グローバル変数にタップ数保持して、ぷりんとえふ?とかいうの使えばいいんでしょ!
それくらい解っちゃうんだから!
printfが使えない!
だめでした
printfを使うためにstdio.hをincludeしたらhexファイルのサイズが大きくなりすぎてエラーになってしまいました…
できました
ちょっと考えてprintfやitoa無しでできました
パズルみたいでたのしいですね
itoaの実装方法はググればいくらでも出てきますが、
表示するだけなら最初から文字列で持つ方が単純でよさそうでした
(WPMを自力で算出するとかなら話は別ですが…)
まず、keymap.cの適当なところに以下を追加します
char tap_count[] = "00000";
void countup_taps(void) {
for (int i = 4; i >= 0; i --) {
if (tap_count[i] >= '9') {
tap_count[i] = '0';
} else {
tap_count[i] = tap_count[i] + 1;
break;
}
}
}
あとはキーが押されたときにカウントアップするようにして
OLEDの表示にtap_count
を追加してあげれば完成です
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
countup_taps();
}
}
static void print_status_narrow(void) {
︙
省略
︙
// Print tap count
oled_write_ln_P(PSTR(""), false);
oled_write(tap_count, false);
}
わーい⊏'ꣲ'|
countup_taps.c
とcountup_taps.h
つくってファイル分割したほうがいいのかな?
C言語ワカラナイ
Leave a Comment