You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

309 lines
16 KiB

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