4FNcake
@4FNcake

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

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

1Answer

Your answer might help someone💌