qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

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