diff options
Diffstat (limited to 'users/xulkal/custom_oled.c')
-rw-r--r-- | users/xulkal/custom_oled.c | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/users/xulkal/custom_oled.c b/users/xulkal/custom_oled.c new file mode 100644 index 000000000..77e580b95 --- /dev/null +++ b/users/xulkal/custom_oled.c | |||
@@ -0,0 +1,96 @@ | |||
1 | #include "custom_oled.h" | ||
2 | #include "process_records.h" | ||
3 | |||
4 | #include <stdio.h> | ||
5 | |||
6 | #ifdef OLED_DRIVER_ENABLE | ||
7 | |||
8 | static void render_logo(void) | ||
9 | { | ||
10 | static const char PROGMEM sol_logo[] = { | ||
11 | 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, | ||
12 | 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, | ||
13 | 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; | ||
14 | oled_write_P(sol_logo, false); | ||
15 | } | ||
16 | |||
17 | static void render_status(void) | ||
18 | { | ||
19 | // Render to mode icon | ||
20 | static const char PROGMEM mode_logo[2][3] = { | ||
21 | {0x97,0x98,0}, | ||
22 | {0xb7,0xb8,0} | ||
23 | }; | ||
24 | |||
25 | oled_write_P(mode_logo[0], false); | ||
26 | |||
27 | #if defined(RGB_MATRIX_ENABLE) | ||
28 | static char buffer[20] = {0}; | ||
29 | snprintf(buffer, sizeof(buffer), " h%3d s%3d v%3d\n", rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val); | ||
30 | oled_write(buffer, false); | ||
31 | #endif | ||
32 | |||
33 | oled_write_P(mode_logo[1], false); | ||
34 | |||
35 | #if defined(RGB_MATRIX_ENABLE) | ||
36 | snprintf(buffer, sizeof(buffer), " s%3d m%3d\n", rgb_matrix_config.speed, rgb_matrix_config.mode); | ||
37 | oled_write(buffer, false); | ||
38 | #endif | ||
39 | |||
40 | // 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 | ||
41 | oled_write_P(PSTR("Layer: "), false); | ||
42 | switch (biton32(layer_state)) | ||
43 | { | ||
44 | case _QWERTY: | ||
45 | #ifndef GAMELAYER_DISABLE | ||
46 | switch (biton32(default_layer_state)) | ||
47 | { | ||
48 | case _QWERTY: | ||
49 | oled_write_P(PSTR("Default\n"), false); | ||
50 | break; | ||
51 | case _GAME: | ||
52 | oled_write_P(PSTR("Game\n"), false); | ||
53 | break; | ||
54 | default: | ||
55 | oled_write_P(PSTR("Undefined\n"), false); | ||
56 | break; | ||
57 | } | ||
58 | #else | ||
59 | oled_write_P(PSTR("Default\n"), false); | ||
60 | #endif | ||
61 | break; | ||
62 | case _LOWER: | ||
63 | oled_write_P(PSTR("Lower\n"), false); | ||
64 | break; | ||
65 | case _RAISE: | ||
66 | oled_write_P(PSTR("Raise\n"), false); | ||
67 | break; | ||
68 | #ifdef TRILAYER_ENABLED | ||
69 | case _ADJUST: | ||
70 | oled_write_P(PSTR("Adjust\n"), false); | ||
71 | break; | ||
72 | #endif | ||
73 | default: | ||
74 | oled_write_P(PSTR("Undefined\n"), false); | ||
75 | break; | ||
76 | } | ||
77 | |||
78 | // Host Keyboard LED Status | ||
79 | uint8_t led_usb_state = host_keyboard_leds(); | ||
80 | oled_write_P(led_usb_state & (1<<USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); | ||
81 | oled_write_P(led_usb_state & (1<<USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); | ||
82 | oled_write_P(led_usb_state & (1<<USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); | ||
83 | } | ||
84 | |||
85 | void oled_task_user(void) | ||
86 | { | ||
87 | if (is_keyboard_master()) | ||
88 | render_status(); | ||
89 | else | ||
90 | { | ||
91 | render_logo(); | ||
92 | oled_scroll_left(); | ||
93 | } | ||
94 | } | ||
95 | |||
96 | #endif | ||