diff options
Diffstat (limited to 'keyboards/marksard/rhymestone/common/oled_helper.c')
| -rw-r--r-- | keyboards/marksard/rhymestone/common/oled_helper.c | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/keyboards/marksard/rhymestone/common/oled_helper.c b/keyboards/marksard/rhymestone/common/oled_helper.c new file mode 100644 index 000000000..537650025 --- /dev/null +++ b/keyboards/marksard/rhymestone/common/oled_helper.c | |||
| @@ -0,0 +1,87 @@ | |||
| 1 | #ifdef OLED_DRIVER_ENABLE | ||
| 2 | #include QMK_KEYBOARD_H | ||
| 3 | #include <stdio.h> | ||
| 4 | #include <string.h> | ||
| 5 | |||
| 6 | void render_logo(void) { | ||
| 7 | |||
| 8 | static const char PROGMEM logo_buf[]={ | ||
| 9 | 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, | ||
| 10 | 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, | ||
| 11 | 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4, | ||
| 12 | 0}; | ||
| 13 | |||
| 14 | oled_write_P(logo_buf, false); | ||
| 15 | } | ||
| 16 | |||
| 17 | void render_lock_status(void) { | ||
| 18 | |||
| 19 | // Host Keyboard LED Status | ||
| 20 | led_t led_state = host_keyboard_led_state(); | ||
| 21 | |||
| 22 | oled_write_P(PSTR("Lock:"), false); | ||
| 23 | if (led_state.num_lock) { | ||
| 24 | oled_write_P(PSTR("Num "), false); | ||
| 25 | } | ||
| 26 | if (led_state.caps_lock) { | ||
| 27 | oled_write_P(PSTR("Caps "), false); | ||
| 28 | } | ||
| 29 | if (led_state.scroll_lock) { | ||
| 30 | oled_write_P(PSTR("Scrl"), false); | ||
| 31 | } | ||
| 32 | |||
| 33 | oled_write_P(PSTR("\n"), false); | ||
| 34 | } | ||
| 35 | |||
| 36 | static char keylog_buf[24] = "Key state ready.\n"; | ||
| 37 | const char code_to_name[60] = { | ||
| 38 | ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', | ||
| 39 | 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', | ||
| 40 | 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', | ||
| 41 | '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', | ||
| 42 | 'R', 'E', 'B', 'T', ' ', '-', ' ', '@', ' ', ' ', | ||
| 43 | ' ', ';', ':', ' ', ',', '.', '/', ' ', ' ', ' '}; | ||
| 44 | |||
| 45 | void update_key_status(uint16_t keycode, keyrecord_t *record) { | ||
| 46 | |||
| 47 | if (!record->event.pressed) return; | ||
| 48 | |||
| 49 | char name = (keycode < 60) ? code_to_name[keycode] : ' '; | ||
| 50 | snprintf(keylog_buf, sizeof(keylog_buf) - 1, "Key:%dx%d %2x %c\n", | ||
| 51 | record->event.key.row, record->event.key.col, | ||
| 52 | (uint16_t)keycode, name); | ||
| 53 | } | ||
| 54 | |||
| 55 | void render_key_status(void) { | ||
| 56 | |||
| 57 | oled_write(keylog_buf, false); | ||
| 58 | } | ||
| 59 | |||
| 60 | #ifdef RGBLIGHT_ENABLE | ||
| 61 | extern rgblight_config_t rgblight_config; | ||
| 62 | |||
| 63 | static char led_buf[24] = "LED state ready.\n"; | ||
| 64 | rgblight_config_t rgblight_config_bak; | ||
| 65 | void update_led_status(void) { | ||
| 66 | |||
| 67 | if (rgblight_config_bak.enable != rgblight_config.enable || | ||
| 68 | rgblight_config_bak.mode != rgblight_config.mode || | ||
| 69 | rgblight_config_bak.hue != rgblight_config.hue || | ||
| 70 | rgblight_config_bak.sat != rgblight_config.sat || | ||
| 71 | rgblight_config_bak.val != rgblight_config.val | ||
| 72 | ) { | ||
| 73 | snprintf(led_buf, sizeof(led_buf) - 1, "LED%c:%2d hsv:%2d %2d %2d\n", | ||
| 74 | rgblight_config.enable ? '*' : '.', (uint8_t)rgblight_config.mode, | ||
| 75 | (uint8_t)(rgblight_config.hue / RGBLIGHT_HUE_STEP), | ||
| 76 | (uint8_t)(rgblight_config.sat / RGBLIGHT_SAT_STEP), | ||
| 77 | (uint8_t)(rgblight_config.val / RGBLIGHT_VAL_STEP)); | ||
| 78 | rgblight_config_bak = rgblight_config; | ||
| 79 | } | ||
| 80 | } | ||
| 81 | |||
| 82 | void render_led_status(void) { | ||
| 83 | |||
| 84 | oled_write(led_buf, false); | ||
| 85 | } | ||
| 86 | #endif | ||
| 87 | #endif | ||
