]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/helix/rev2/keymaps/edvorakjp/oled.c
Update KBD67 readme so that it mentions the KBD65 PCB (#5143)
[qmk_firmware.git] / keyboards / helix / rev2 / keymaps / edvorakjp / oled.c
1 #include <string.h>
2 #include "oled.h"
3
4 static void render_logo(struct CharacterMatrix *matrix) {
5
6   static char logo[] = {
7     0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
8     0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
9     0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,
10     0};
11   matrix_write(matrix, logo);
12 }
13
14 void matrix_update(struct CharacterMatrix *dest,
15                    const struct CharacterMatrix *source) {
16   if (memcmp(dest->display, source->display, sizeof(dest->display))) {
17     memcpy(dest->display, source->display, sizeof(dest->display));
18     dest->dirty = true;
19   }
20 }
21
22 void render_status(struct CharacterMatrix *matrix) {
23
24   // Render to mode icon
25   static char logo[][2][3] = {{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
26   int mode_number = get_enable_kc_lang() ? 0 : 1;
27   matrix_write(matrix, logo[mode_number][0]);
28   matrix_write(matrix, "\n");
29   matrix_write(matrix, logo[mode_number][1]);
30
31   // Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
32   char buf[40];
33   snprintf(buf,sizeof(buf), "Undef-%ld", layer_state);
34   matrix_write_P(matrix, PSTR("\nLayer: "));
35   switch (biton32(layer_state)) {
36     case L_BASE:
37       matrix_write_P(matrix, PSTR("Default"));
38       break;
39     case _RAISE:
40       matrix_write_P(matrix, PSTR("Raise"));
41       break;
42     case _LOWER:
43       matrix_write_P(matrix, PSTR("Lower"));
44       break;
45     default:
46       matrix_write(matrix, buf);
47   }
48
49   // Host Keyboard LED Status
50   char led[40];
51   snprintf(led, sizeof(led), "\n%s %s %s",
52       (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NMLK" : "    ",
53       (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : "    ",
54       (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : "    ");
55   matrix_write(matrix, led);
56 }
57
58 void iota_gfx_task_user(void) {
59   struct CharacterMatrix matrix;
60
61 #if DEBUG_TO_SCREEN
62   if (debug_enable) { return; }
63 #endif
64
65   matrix_clear(&matrix);
66   if (is_master) {
67     render_status(&matrix);
68   } else {
69     render_logo(&matrix);
70   }
71   matrix_update(&display, &matrix);
72 }