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