qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

keymap.c (16546B)


      1 #include QMK_KEYBOARD_H
      2 
      3 // Defines names for use in layer keycodes and the keymap
      4 enum layer_names {
      5     _QWERTY,
      6     _LOWER,
      7     _RAISE,
      8     _ADJUST
      9 };
     10 
     11 #define LOWER MO(_LOWER)
     12 #define RAISE MO(_RAISE)
     13 
     14 // Defines for task manager and such
     15 #define CALTDEL LCTL(LALT(KC_DEL))
     16 #define TSKMGR LCTL(LSFT(KC_ESC))
     17 
     18 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     19 
     20 /* Qwerty
     21  *
     22  * ,----------------------------------.           ,----------------------------------.
     23  * |   Q  |   W  |   E  |   R  |   T  |           |   Y  |   U  |   I  |   O  |   P  |
     24  * |------+------+------+------+------|           |------+------+------+------+------|
     25  * |   A  |   S  |   D  |   F  |   G  |           |   H  |   J  |   K  |   L  |   ;  |
     26  * |------+------+------+------+------|           |------+------+------+------+------|
     27  * |   Z  |   X  |   C  |   V  |   B  |           |   N  |   M  |   ,  |   .  |   /  |
     28  * `----------------------------------'           `----------------------------------'
     29  *                  ,--------------------.    ,--------------------.
     30  *                  | Ctrl | LOWER| Space|    |BckSpc| RAISE| Shift|
     31  *                  `--------------------'    `--------------------.
     32  */
     33 [_QWERTY] = LAYOUT_split_3x5_3(
     34   KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,         KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,
     35   KC_A,    KC_S,    KC_D,    KC_F,    KC_G,         KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,
     36   KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,         KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,
     37                     KC_LCTL, LOWER, KC_SPC,         KC_BSPC, RAISE, OSM(MOD_LSFT)
     38 ),
     39 
     40 /* Raise
     41  *
     42  * ,----------------------------------.           ,----------------------------------.
     43  * |   1  |   2  |   3  |   4  |   5  |           |   6  |   7  |   8  |   9  |   0  |
     44  * |------+------+------+------+------|           |------+------+------+------+------|
     45  * |  Tab | Left | Down |  Up  | Right|           |      |   -  |   =  |   [  |   ]  |
     46  * |------+------+------+------+------|           |------+------+------+------+------|
     47  * |  Ctrl|   `  |  GUI |  Alt |      |           |      |      |      |   \  |   '  |
     48  * `----------------------------------'           `----------------------------------'
     49  *                  ,--------------------.    ,--------------------.
     50  *                  |      | LOWER|      |    |      | RAISE|      |
     51  *                  `--------------------'    `--------------------.
     52  */
     53 [_RAISE] = LAYOUT_split_3x5_3(
     54   KC_1,    KC_2,    KC_3,    KC_4,    KC_5,         KC_6,    KC_7,    KC_8,    KC_9,    KC_0,
     55   KC_TAB,    KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT,      _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC,
     56   KC_LCTL, KC_GRV,  KC_LGUI, KC_LALT, _______,      _______, _______, _______, KC_BSLS,  KC_QUOT,
     57                     _______, _______, _______,      _______, _______, _______
     58 ),
     59 
     60 /* Lower
     61  *
     62  * ,----------------------------------.           ,----------------------------------.
     63  * |   !  |   @  |   #  |   $  |   %  |           |   ^  |   &  |   *  |   (  |   )  |
     64  * |------+------+------+------+------|           |------+------+------+------+------|
     65  * |  Esc |      |      |      |      |           |      |   _  |   +  |   {  |   }  |
     66  * |------+------+------+------+------|           |------+------+------+------+------|
     67  * |  Caps|   ~  |      |      |      |           |      |      |      |   |  |   "  |
     68  * `----------------------------------'           `----------------------------------'
     69  *                  ,--------------------.    ,--------------------.
     70  *                  |      | LOWER|      |    |      | RAISE|  Del |
     71  *                  `--------------------'    `--------------------.
     72  */
     73 [_LOWER] = LAYOUT_split_3x5_3(
     74   KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,      KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
     75   KC_ESC,  _______, _______, _______, _______,      _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR,
     76   KC_CAPS, KC_TILD, _______, _______, _______,      _______, _______, _______, KC_PIPE,  KC_DQT,
     77                     _______, _______, _______,      KC_ENT,  _______, KC_DEL
     78 ),
     79 
     80 /* Adjust (Lower + Raise)
     81  *
     82  * ,----------------------------------.           ,----------------------------------.
     83  * |  F1  |  F2  |  F3  |  F4  |  F5  |           |   F6 |  F7  |  F8  |  F9  |  F10 |
     84  * |------+------+------+------+------|           |------+------+------+------+------|
     85  * |  F11 |  F12 |      |      |      |           |      |      |      |Taskmg|caltde|
     86  * |------+------+------+------+------|           |------+------+------+------+------|
     87  * | Reset|      |      |      |      |           |      |      |      |      |      |
     88  * `----------------------------------'           `----------------------------------'
     89  *                  ,--------------------.    ,--------------------.
     90  *                  |      | LOWER|      |    |      | RAISE|      |
     91  *                  `--------------------'    `--------------------.
     92  */
     93 [_ADJUST] =  LAYOUT_split_3x5_3(
     94   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,        KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,
     95   KC_F11,  KC_F12,  _______, _______, _______,      _______, _______, _______, TSKMGR, CALTDEL,
     96   QK_BOOT, _______, _______, _______, _______,      _______, _______, _______, _______,  _______,
     97                     _______, _______, _______,      _______,  _______, _______
     98 )
     99 };
    100 
    101 layer_state_t layer_state_set_user(layer_state_t state) {
    102   return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
    103 }
    104 
    105 uint16_t rgb_edit_timer = 0;
    106 uint16_t last_rgb_char = 0;
    107 
    108 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    109   switch(keycode) {
    110     case QK_UNDERGLOW_TOGGLE:
    111     case QK_UNDERGLOW_MODE_NEXT:
    112     case QK_UNDERGLOW_HUE_DOWN:
    113     case QK_UNDERGLOW_HUE_UP:
    114     case QK_UNDERGLOW_SATURATION_DOWN:
    115     case QK_UNDERGLOW_SATURATION_UP:
    116     case QK_UNDERGLOW_VALUE_UP:
    117     case QK_UNDERGLOW_VALUE_DOWN:
    118       rgb_edit_timer = timer_read();
    119       last_rgb_char = keycode;
    120       return true;
    121   }
    122   return true;
    123 }
    124 
    125 #ifdef OLED_ENABLE
    126 
    127 oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    128     return OLED_ROTATION_180;
    129 }
    130 
    131 void render_default_layer_state(void) {
    132     oled_write_P(PSTR("Layout: "), false);
    133     switch (get_highest_layer(default_layer_state)) {
    134         case _QWERTY:
    135             oled_write_ln_P(PSTR("Qwerty"), false);
    136             break;
    137     }
    138 }
    139 
    140 #ifdef RGBLIGHT_ENABLE
    141 bool cleared = false;
    142 void render_rgb_state(void) {
    143     if(!rgblight_get_mode()) {
    144         if(!cleared) {
    145             oled_clear();
    146             cleared = true;
    147         }
    148         return;
    149     }
    150     cleared = false;
    151     uint8_t width = (OLED_DISPLAY_WIDTH/OLED_FONT_WIDTH)-10;
    152     uint8_t hue = (rgblight_get_hue()*width/255),
    153         sat = (rgblight_get_sat()*width/255),
    154         val = (rgblight_get_val()*width/255);
    155     bool changing_hue = timer_elapsed(rgb_edit_timer) < 1000 && (last_rgb_char == QK_UNDERGLOW_HUE_UP || last_rgb_char == QK_UNDERGLOW_HUE_DOWN);
    156     bool changing_sat =  timer_elapsed(rgb_edit_timer) < 1000 && (last_rgb_char == QK_UNDERGLOW_SATURATION_UP || last_rgb_char == QK_UNDERGLOW_SATURATION_DOWN);
    157     bool changing_val =  timer_elapsed(rgb_edit_timer) < 1000 && (last_rgb_char == QK_UNDERGLOW_VALUE_UP || last_rgb_char == QK_UNDERGLOW_VALUE_DOWN);
    158 
    159     uint8_t i;
    160 
    161     oled_write_ln_P(PSTR(""), false);
    162 
    163     oled_write_P(PSTR("Hue:    ["), changing_hue);
    164     for(i = 0; i < width; ++i) {
    165         oled_write_P(i<hue?PSTR("-"):i==hue?PSTR("|"):PSTR(" "), changing_hue);
    166     }
    167     oled_write_P(PSTR("]"), changing_hue);
    168     oled_write_P(PSTR("Sat:    ["), changing_sat);
    169     for(i = 0; i < width; ++i) {
    170         oled_write_P(i<sat?PSTR("-"):i==sat?PSTR("|"):PSTR(" "), changing_sat);
    171     }
    172     oled_write_P(PSTR("]"), changing_sat);
    173     oled_write_P(PSTR("Bri:    ["), changing_val);
    174     for(i = 0; i < width; ++i) {
    175         oled_write_P(i<val?PSTR("-"):i==val?PSTR("|"):PSTR(" "), changing_val);
    176     }
    177     oled_write_P(PSTR("]"), changing_val);
    178 }
    179 #endif // RGBLIGHT_ENABLE
    180 
    181 void render_layer_state(void) {
    182     oled_write_P(PSTR("Layer:  "), false);
    183     switch (get_highest_layer(layer_state)) {
    184         case _QWERTY:
    185             oled_write_ln_P(PSTR("Base"), false);
    186             break;
    187         case _LOWER:
    188             oled_write_ln_P(PSTR("Lower"), false);
    189             break;
    190         case _RAISE:
    191             oled_write_ln_P(PSTR("Raise"), false);
    192             break;
    193         case _ADJUST:
    194             oled_write_ln_P(PSTR("Adjust"), false);
    195             break;
    196         default:
    197             oled_write_ln_P(PSTR("Unknown"), false);
    198     }
    199 }
    200 
    201 void render_keylock_status(led_t led_state) {
    202     oled_write_P(PSTR("Lock:   "), false);
    203     oled_write_P(PSTR("123"), led_state.num_lock);
    204     oled_write_P(PSTR(" "), false);
    205     oled_write_ln_P(led_state.caps_lock?PSTR("ABC"):PSTR("abc"), led_state.caps_lock);
    206 }
    207 
    208 void render_mod_status(uint8_t modifiers) {
    209     oled_write_P(PSTR("Mods:   "), false);
    210     oled_write_P(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
    211     oled_write_P(PSTR(" "), false);
    212     oled_write_P(PSTR("C"), (modifiers & MOD_MASK_CTRL));
    213     oled_write_P(PSTR(" "), false);
    214     oled_write_P(PSTR("A"), (modifiers & MOD_MASK_ALT));
    215     oled_write_P(PSTR(" "), false);
    216     oled_write_ln_P(PSTR("W"), (modifiers & MOD_MASK_GUI));
    217 }
    218 
    219 static void render_status(void) {
    220     // Host Keyboard Layer Status
    221     render_default_layer_state();
    222     render_layer_state();
    223     render_keylock_status(host_keyboard_led_state());
    224     render_mod_status(get_mods() | get_oneshot_mods());
    225 #ifdef RGBLIGHT_ENABLE
    226     render_rgb_state();
    227 #endif // RGBLIGHT_ENABLE
    228 }
    229 
    230 static void render_logo(void) {
    231     static const char PROGMEM logo[] = {
    232         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    233         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    234         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    235         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x1c, 0x1c, 0x38, 0xf8,
    236         0xf0, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    237         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    238         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    239         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    240         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    241         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    242         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    243         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00,
    244         0x03, 0x1f, 0x7f, 0xfe, 0xf0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    245         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    246         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    247         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    248         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    249         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    250         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    251         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x87, 0x9f, 0x3f, 0xfc, 0xf0,
    252         0xe0, 0xc0, 0x00, 0x01, 0x07, 0x0f, 0x3f, 0x3f, 0x7f, 0xfe, 0xfe, 0xee, 0xce, 0xfe, 0x8e, 0x0e,
    253         0xfe, 0x8e, 0x0e, 0xfe, 0x8e, 0x0e, 0xfe, 0xfe, 0x7e, 0xee, 0xdc, 0x9c, 0x38, 0x78, 0xf0, 0xe0,
    254         0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    255         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    256         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    257         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    258         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    259         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf7, 0xe3, 0xc3, 0xc7, 0x8f, 0x0e, 0x1f,
    260         0x1f, 0x3f, 0x7f, 0x7f, 0xfe, 0xfc, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0,
    261         0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe7, 0xff, 0xdb, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03,
    262         0x1f, 0xff, 0xfe, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    263         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    264         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    265         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    266         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    267         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xfc, 0xff, 0xff, 0x8f, 0x8f, 0x0f, 0x0f, 0x0f, 0x0f,
    268         0x0e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0f, 0x0f, 0x0c, 0x08, 0x0f, 0x0c, 0x08,
    269         0x0f, 0x0c, 0x08, 0x0f, 0x0c, 0x08, 0x0f, 0x0f, 0x0e, 0x07, 0x03, 0x01, 0x80, 0xc0, 0xe0, 0x40,
    270         0x01, 0x03, 0x07, 0x1f, 0xfe, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    271         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    272         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
    273         0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    274         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    275         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf3, 0xf3, 0xf3, 0x03, 0x03, 0x03, 0x03,
    276         0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xf3, 0xff, 0xff, 0x9f, 0x8f, 0x80, 0x80, 0xc0, 0xf0, 0xfc,
    277         0x7e, 0x1e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xce, 0xce, 0xef, 0x67, 0x67, 0x6f, 0x6f, 0xef, 0xee,
    278         0xce, 0x8e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0x60,
    279         0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    280         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfc, 0xff,
    281         0xbf, 0x83, 0x8f, 0xff, 0xff, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe,
    282         0x1c, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0x1c, 0x0e, 0x06,
    283         0x06, 0x06, 0x06, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0c, 0x06, 0x06, 0x06,
    284         0x0e, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31,
    285         0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0xff,
    286         0xef, 0xc7, 0x80, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x1b, 0x39, 0x70, 0xf0,
    287         0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    288         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3f, 0x3f, 0x1f, 0x01,
    289         0x01, 0x01, 0x01, 0x01, 0x07, 0x3f, 0x3f, 0x3c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f,
    290         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1f, 0x1c, 0x38, 0x30,
    291         0x30, 0x30, 0x30, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00,
    292         0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    293         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x3f,
    294         0x1f, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x1f, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x1f,
    295         0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    296     };
    297 
    298     oled_write_raw_P(logo, 1024);
    299 }
    300 
    301 bool oled_task_user(void) {
    302     if (is_keyboard_master()) {
    303         render_status();     // Renders the current keyboard state (layer, lock, caps, scroll, etc)
    304     }
    305     else {
    306         render_logo();
    307     }
    308     return false;
    309 }
    310 #endif