KeyballのSlave側でのパラパラ漫画的なものの実装
解決したいこと
Keyball44のファームウェアをわからないなりに試行錯誤していじっています。そんな中でRuncatを実装するという記事(https://qiita.com/empelt/items/268389709a52cf533d13)
をみて実装してみたい!と思いマスター側では同じものを実装できました。
しかしこれをSlave側で実装しようとした際にprocess_record_kbから変数を引っ張ってこれずに困っています。
当方プログラミングの知識自体も浅いのですが、ご教授いただければ幸いです。
keyball.c追記分
uint8_t cat_state = 0;
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
// store last keycode, row, and col for OLED
cat_state = (cat_state + 1) % 3;
keyball.last_kc = keycode;
keyball.last_pos = record->event.key;
pressing_keys_update(keycode, record);
if (!process_record_user(keycode, record)) {
return false;
}
keymap.c追記分
#include "../../../lib/keyball/keyball.h"
~
static const char PROGMEM cat_0[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0xf8,
0xf8, 0xf0, 0x18, 0xf8, 0xf8, 0xf8, 0xf8, 0x00, 0xf8, 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0x83, 0x03, 0x00, 0x80, 0x83, 0x83, 0x83, 0xff, 0xff, 0xff,
0xfd, 0xfc, 0x87, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x83, 0x83, 0xc3, 0xc3, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xff, 0xff, 0xff,
0xfe, 0x3c, 0xe3, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x3f, 0x3f, 0x3f,
0x3f, 0x1f, 0x11, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x1f, 0x1f, 0x1f, 0x7f, 0x7f, 0x7f, 0x00, 0x00,
};
static const char PROGMEM cat_1[] = {
0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0xf8, 0xf8, 0xf8,
0xf8, 0x70, 0x98, 0xf8, 0xf8, 0xf8, 0xf8, 0x00, 0xf8, 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x00, 0x40, 0xc1, 0xc1, 0xc1, 0xc1, 0x00, 0xc0, 0xc1, 0xc1, 0xc1, 0xff, 0xff, 0xff,
0xbe, 0xbe, 0xc3, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x70, 0x70, 0x00, 0x00, 0x70, 0x70, 0x70, 0xff, 0xff, 0xff,
0xff, 0xcf, 0x78, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
0x07, 0x03, 0x02, 0x03, 0x03, 0x03, 0x03, 0x00, 0x03, 0x03, 0x03, 0x0f, 0x0f, 0x0f, 0x00, 0x00,
};
static const char PROGMEM cat_2[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0,
0xc0, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x0c, 0x0c, 0x0c, 0xff, 0xff, 0xff,
0xf7, 0xf3, 0x1c, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x02, 0x06, 0x06, 0x86, 0x86, 0x00, 0x06, 0x86, 0x86, 0x86, 0xff, 0xff, 0xff,
0xfd, 0x7d, 0xc6, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x00, 0x00, 0x03, 0x03, 0x03, 0x3f, 0x3f, 0x3f,
0x3f, 0x1e, 0x13, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x1f, 0x1f, 0x1f, 0x7f, 0x7f, 0x7f, 0x00, 0x00
};
void oledkit_render_logo_user(void) {
#ifdef OLED_ENABLE
switch (cat_state) {
case 0:
oled_write_raw_P(cat_0, sizeof(cat_0));
break;
case 1:
oled_write_raw_P(cat_1, sizeof(cat_1));
break;
case 2:
oled_write_raw_P(cat_2, sizeof(cat_2));
break;
}
#endif
}
keyball.h追記分
//keyball.c---664行目
extern uint8_t cat_state;
このような形でヘッダーにグローバル変数を用意してそこから引き込めればと考えたのですが
どうもうまくいきません、どのようなアプローチが適切なのかわからず詰まっています。
かなり質問もアバウトながらで申し訳ないですが、ご教授お願い致します。
0